扫码阅读
手机扫码阅读

SpringSecurity-14-SpringSecurity结合JWT实现前后端分离的后端授权

206 2024-07-19

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:SpringSecurity-14-SpringSecurity结合JWT实现前后端分离的后端授权
文章来源:
springboot葵花宝典
扫码关注公众号
JWT与SpringSecurity集成实现授权

什么是JWT

JWT(JSON WEB TOKEN)是一种基于RFC 7519标准的安全传输JSON对象的方式。通过数字签名可确保信任。

JWT的组成

JWT由三部分组成:header.payload.signature。其中header存放签名算法,payload存放用户信息和时间信息,signature是基于header和payload生成的签名,确保数据未被篡改。

JWT实例

提供了JWT字符串实例,并说明可以通过jwt.io解析。

编码实现

环境准备工作

创建Spring Boot项目,集成Spring Security,并实现UserDetailsService接口提供用户信息。去除formLogin配置,因为JWT使用JSON接口,不需要表单提交。确保关闭CSRF防御。

添加项目依赖

在pom.xml中添加JWT、Spring Security、Web、数据库连接等相关依赖。

添加JWT配置

在application.yml中添加JWT相关配置,包括存储JWT的Header名称、加密密钥和JWT的有效时间。

添加JWT token工具类

JwtTokenUtil类负责生成和解析JWT token,提供生成token、获取用户名、验证token和刷新token的方法。

UserDetailsService接口的实现

MyUserDetailsService类实现UserDetailsService接口,根据用户名获取用户信息。

开发登录接口

JwtAdminService接口提供登录和刷新Token功能,JwtAdminServiceImpl为接口实现。

JwtAuthController的实现

提供"/login"接口用于用户登录验证并生成JWT,"/refreshtoken"接口用于刷新JWT的有效期。

添加SpringSecurity配置类

LearnSpringSecurity类继承WebSecurityConfigurerAdapter,配置资源权限、过滤器链、认证管理器等。

添加RestfulAccessDeniedHandler和RestAuthenticationEntryPoint

分别处理没有访问权限和未登录或token失效时的情况,返回自定义JSON结果。

添加JwtAuthenticationTokenFilter

过滤器用于在用户名和密码校验前根据token信息进行登录操作。

测试

测试获取token的接口,验证不带token和携带JWT令牌的请求。

如果您觉得本文不错,欢迎关注,点赞,收藏支持。

想要了解更多内容?

查看原文:SpringSecurity-14-SpringSecurity结合JWT实现前后端分离的后端授权
文章来源:
springboot葵花宝典
扫码关注公众号

主要分享JAVA技术,主要包含SpringBoot、SpingCloud、Docker、中间件等技术,以及Github开源项目

266 篇文章
浏览 52K
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设 白皮书上线