我是 码农小胖哥。天天有编程干货分享。觉得写的不错。点个赞,转发一下,关注一下。本文为个人原创文章,转载请注明出处,非法转载抄袭将追究其责任。
![56e9c660ea60a91b031451bdacf9d5bd.png](https://img-blog.csdnimg.cn/img_convert/56e9c660ea60a91b031451bdacf9d5bd.png)
1. 前言
欢迎阅读 https://www.felord.cn/categories/spring-security/,https://www.felord.cn/spring-security-custom-jwt.html 我们实现了 JWT 工具。本篇我们将一起探讨如何将 JWT 与 Spring Security 结合起来,在认证成功后不再跳转到指定页面而是直接返回 JWT Token 。 本文的DEMO 可通过文末的方式获取
2. 流程
JWT 适用于前后端分离。我们在登录成功后不在跳转到首页,将会直接返回 JWT Token 对(DEMO中为JwtTokenPair),登录失败后返回认证失败相关的信息。
3. 实现登录成功/失败返回逻辑
如果你看过 https://www.felord.cn/spring-security-login.html 将非常容易理解下面的做法。
3.1 AuthenticationSuccessHandler 返回 JWT Token
AuthenticationSuccessHandler 用于处理登录成功后的逻辑,我们编写实现并注入 Spring IoC 容器:
/** * 处理登录成功后返回 JWT Token 对. * * @param jwtTokenGenerator the jwt token generator * @return the authentication success handler */ @Bean public AuthenticationSuccessHandler authenticationSuccessHandler(JwtTokenGenerator jwtTokenGenerator) { return (request, response, authentication) -> { if (response.isCommitted()) { log.debug("Response has already been committed"); return; } Map map = new HashMap<>(5); map.put("time