国学经典,永久流传《诗经朗诵全集》
《诗经朗诵全集》带你领略国学经典,永久咏传。...
2023-07-31
浏览器再次请求,并将JWT放在请求头中。
验证服务器的JWT签名并提取用户信息。
服务器返回响应。
我们来说说在Springboot中实现JWT认证的过程。
Java语言在jwt.io网站上的JWT实现
我们可以基于JWT原理自己实现,但引入JWT实现的依赖性更方便。Jwt.io网站列出了不同编程语言的Jwt实现,其中com.auth0是基于java语言的常见JWT实现。
com.auth0 java-jwt 3.4.0
我们希望通过验证令牌来控制客户端对服务器方法的访问控制,因此在每个客户端请求到达后,我们应该进行令牌验证。为了避免在每个服务器方法中重复放置令牌验证的代码逻辑,我们可以通过注释来验证令牌。
@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)public @interface UserLoginToken { boolean required() default true;}
上面的代码定义了一个注释@UserLoginToken,可以用来修饰方法或类,比如Controller。
@UserLoginToken@GetMapping(\"/getMessage\")public String getMessage(){ return \"你已通过验证\";}
getMessage()方法用注释@UserLoginToken进行注释,该注释必须通过令牌进行访问。
显然,Login方法login()不需要注释。登录的逻辑是先验证用户名和密码,如果验证通过,再调用JWT库的方法生成令牌。
@Service(\"TokenService\")public class TokenService { public String getToken(User user){ String token = \"\"; token = JWT.create().withAudience(user.getId()) .sign(Algorithm.HMAC256(user.getPassword())); return token; }}
以上代码使用HMAC-SHA256算法生成令牌,密钥为服务器数据库中存储的用户密码。
WithAudience()将用户ID存储到令牌中,这样服务器就可以从令牌中提取用户ID,并在收到带有令牌的请求后知道用户是谁。
有注释是不够的,还要有拦截器来处理注释。要实现拦截器,您必须继承HandlerInterceptor接口。
public class AuthenticationInterceptor implements HandlerInterceptor { @Autowired UserService userService; @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object object) throws Exception { ... ... }
HandlerInterceptor接口主要定义了三种方法
以上内容就是为大家推荐的java认证(java证书有哪些)最佳回答,如果还想搜索其他问题,请收藏本网站或点击搜索更多问题
内容来源于网络仅供参考版权声明:所有来源标注为小樱知识网www.xiaoyin02.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可。
本文标题:java认证(java证书有哪些)
本文地址:https://www.xiaoyin02.com/shcs/599504.html
相关文章
热点文章
2021年独生子女补贴新政策是真的吗(独生子女证有有效期吗)
2021年国庆节阅兵仪式几点开始几点结束(2021年国庆节还有阅兵吗)
鼠目寸光一点红是什么生肖动物(鼠目寸光一点红)指什么生肖,紧密
k0到k9的玩法大全(强制gc的玩法和注意事项)
入土为安是什么生肖《入土为安》打一个生肖动物,词语解释
浙江12月底全面停工是真的吗(浙江什么时候放假停工)
如何做t(t怎么把p做哭)
北京口碑最差的三甲医院(北京301医院最擅长什么)