• 神奇的瘦身利器让你轻松瘦身,放心变美

java认证(java证书有哪些)

原创投稿 wpadmin 3年前 (2022-02-17) 214次浏览 0个评论

java认证(什么是Java证书)

记录认证

原创2021-07-28 06: 29网上微言“Java面试常见问题:什么是JWT?”介绍了会话管理中常用的JWT标准。JWT在实现web项目的登录认证和授权方面非常常见。

java认证(java证书有哪些)JWT请求流程

我们先回顾一下JWT的请求流程:

使用用户名和密码向服务器发送开机自检请求。

验证服务器后,使用密钥创建一个JWT字符串。

将JWT从服务器返回到浏览器(客户端)

浏览器再次请求,并将JWT放在请求头中。

验证服务器的JWT签名并提取用户信息。

服务器返回响应。

我们来说说在Springboot中实现JWT认证的过程。

引入JWT依赖

java认证(java证书有哪些)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接口主要定义了三种方法


有肥胖困扰?专业瘦身老师教你1天瘦1斤

添加微信咨询:A-noweixin (手机长按可复制,加好友)

java认证(java证书有哪些)
已帮助30000+人成功瘦身
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址