SpringSecurity-14-SpringSecurity结合JWT实现前后端分离的后端授权
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
什么是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令牌的请求。
如果您觉得本文不错,欢迎关注,点赞,收藏支持。
想要了解更多内容?