当前位置: 首页 > news >正文

网站建设现在还有没有市场优秀网站建设报价

网站建设现在还有没有市场,优秀网站建设报价,导航网站优化,网站建设通知一言以蔽之#xff0c;JWT 可以携带非敏感信息#xff0c;并具有不可篡改性。可以通过验证是否被篡改#xff0c;以及读取信息内容#xff0c;完成网络认证的三个问题#xff1a;“你是谁”、“你有哪些权限”、“是不是冒充的”。 为了安全#xff0c;使用它需要采用 …一言以蔽之JWT 可以携带非敏感信息并具有不可篡改性。可以通过验证是否被篡改以及读取信息内容完成网络认证的三个问题“你是谁”、“你有哪些权限”、“是不是冒充的”。   为了安全使用它需要采用 Https 协议并且一定要小心防止用于加密的密钥泄露。 采用 JWT 的认证方式下服务端并不存储用户状态信息有效期内无法废弃有效期到期后需要重新创建一个新的来替换。  所以它并不适合做长期状态保持不适合需要用户踢下线的场景不适合需要频繁修改用户信息的场景。因为要解决这些问题总是需要额外查询数据库或者缓存或者反复加密解密强扭的瓜不甜不如直接使用 Session。不过作为服务间的短时效切换还是非常合适的就比如 OAuth 之类的。 目标功能点 通过填写用户名和密码登录。 验证成功后, 服务端生成 JWT 认证 token, 并返回给客户端。验证失败后返回错误信息。客户端在每次请求中携带 JWT 来访问权限内的接口。每次请求验证 token 有效性和权限在无有效 token 时抛出 401 未授权错误。当发现请求带着的 token 有效期快到了的时候返回特定状态码重新请求一个新 token。 ​​​​​​​Spring Security是Spring家族中的安全框架可以用来做用户验证和权限管理等。Spring Security是一款重型框架不过功能十分强大。一般来说如果项目中需要进行权限管理具有多个角色和多种权限我们可以使用Spring Security。SpringSecurity 采用的是责任链的设计模式是一堆过滤器链的组合它有一条很长的过滤器链。 准备工作 引入 Maven 依赖 针对这个登录验证的实现需要引入 Spring Security、jackson、java-jwt 三个包。 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-security/artifactId /dependency dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion2.12.1/version /dependency dependencygroupIdcom.auth0/groupIdartifactIdjava-jwt/artifactIdversion3.12.1/version /dependency 配置 DAO 数据层 要验证用户前自然是先要创建用户实体对象以及获取用户的服务类。不同的是这两个类需要实现 Spring Security 的接口以便将它们集成到验证框架中。 User 用户实体类需要实现 ”UserDetails“ 接口这个接口要求实现 getUsername、getPassword、getAuthorities 三个方法用以获取用户名、密码和权限。以及 isAccountNonExpiredisAccountNonLocked、isCredentialsNonExpired、isEnabled 这四个判断是否是有效用户的方法因为和验证无关所以先都返回 true。这里图方便用了 lombok。 Data public class User implements UserDetails {private static final long serialVersionUID 1L;private String username;private String password;private Collection? extends GrantedAuthority authorities;... } UserService 用户服务类需要实现 “UserDetailsService” 接口这个接口非常简单只需要实现 loadUserByUsername(String username) 这么一个方法。这里使用了 MyBatis 来连接数据库获取用户信息。 Service public class UserService implements UserDetailsService {AutowiredUserMapper userMapper;OverrideTransactionalpublic User loadUserByUsername(String username) {return userMapper.getByUsername(username);}... } 创建 JWT 工具类 这个工具类主要负责 token 的生成验证从中取值。 Component public class JwtTokenProvider {private static final long JWT_EXPIRATION 5 * 60 * 1000L; // 五分钟过期public static final String TOKEN_PREFIX Bearer ; // token 的开头字符串private String jwtSecret XXX 密钥打死也不能告诉别人;... } 生成 JWT从以通过验证的认证对象中获取用户信息然后用指定加密方式以及过期时间生成 token。这里简单的只加了用户名这一个信息到 token 中 public String generateToken(Authentication authentication) {User userPrincipal (User) authentication.getPrincipal(); // 获取用户对象Date expireDate new Date(System.currentTimeMillis() JWT_EXPIRATION); // 设置过期时间try {Algorithm algorithm Algorithm.HMAC256(jwtSecret); // 指定加密方式return JWT.create().withExpiresAt(expireDate).withClaim(username, userPrincipal.getUsername()) .sign(algorithm); // 签发 JWT} catch (JWTCreationException jwtCreationException) {return null;} } 验证 JWT指定和签发相同的加密方式验证这个 token 是否是本服务器签发是否篡改或者已过期。 public boolean validateToken(String authToken) {try {Algorithm algorithm Algorithm.HMAC256(jwtSecret); // 和签发保持一致JWTVerifier verifier JWT.require(algorithm).build();verifier.verify(authToken);return true;} catch (JWTVerificationException jwtVerificationException) {return false;} } 获取荷载信息从 token 的荷载部分里解析用户名信息这部分是 md5 编码的属于公开信息。 public String getUsernameFromJWT(String authToken) {try {DecodedJWT jwt JWT.decode(authToken);return jwt.getClaim(username).asString();} catch (JWTDecodeException jwtDecodeException) {return null;} } 登录 登录部分需要创建三个文件负责登录接口处理的拦截器登陆成功或者失败的处理类。 LoginFilter Spring Security 默认自带表单登录负责处理这个登录验证过程的过滤器叫“UsernamePasswordAuthenticationFilter”不过它只支持表单传值这里用自定义的类继承它使其能够支持 JSON 传值负责登录验证接口。 这个拦截器只需要负责从请求中取值即可验证工作 Spring Security 会帮我们处理好。 滑动验证页面 SpringBoot整合Spring Security JWT实现用户认证-阿里云开发者社区
http://www.zqtcl.cn/news/761118/

相关文章:

  • wordpress产品编辑如何优化wordpress
  • 网站后台更新缓存失败网站平台规划方案
  • 网站开发需求分析主要内容saas建站系统是怎么实现的
  • 做qq头像的网站有哪些wordpress怎么部署到虚拟linux服务器
  • 征求网站建设企业网站建设word
  • 市民服务中心网站建设小型公众号开发
  • 服装网站建设策划书论文基层建设刊物网站
  • 网站建设合同技术开发合同范本wordpress备份和还原
  • 物流信息平台网站建设一流本科专业建设点网站
  • 天猫网站建设的目标是什么装潢设计软件
  • 电商网站首页图片网站功能模块建设
  • 邮件服务器是不是网站服务器黄江网站建设公司
  • 科技部网站方案网页设计网站设计欣赏
  • 自贡建设机械网站网站策划与运营课程认知
  • 公司做网站该注意哪些廊坊seo
  • 网站开发目录高尔夫 wordpress
  • 三只松鼠网站建设不做网站做百家号
  • 石家庄网站关键词推广淘宝网站建设设计模板
  • 马鞍山什么房产网站做的好网速
  • 国外做兼职网站软件园二期做网站的公司
  • 淘客网站备案教程网页设计与制作教程十四五规划
  • 哪些网站可以做外部锚文本网页设计个人简历怎么做
  • 福州网站营销北京著名网站建设公司
  • 导购网站开发 源码wordpress 获取总页数
  • 网站名查找wordpress评论人
  • 网络推广最好的网站有哪些wordpress怎么用万网域名
  • 大连仟亿科技网站建设公司 概况网络信用贷款哪个好
  • 配置了iis打不开网站外贸建站哪个最便宜
  • 酒店网站建设描述免费建站网站有哪些
  • 做宠物的网站主题思想网站建设 司法公开的需要