Day06 权限认证-项目集成SpringSecurity
文章目录
一、登录功能实现
二、LoginServiceImpl的login方法思路
功能描述
- 用户认证:
验证用户提供的用户名和密码是否正确。
使用 Spring Security 的 AuthenticationManager 来完成认证。 - 加载用户信息:
查询用户的角色和资源权限信息,并将其封装在返回对象中。 - 生成 Token:
生成一个用户令牌(userToken)和一个 JWT 令牌(jwtToken)。
将这些令牌存储在 Redis 中,用于后续的权限校验和续期。 - 返回用户数据:
返回用户数据(包括用户角色、资源权限和令牌)以便前端使用。
三、将用户数据存入线程中
思路分析
- 当用户登录成功以后,会下发一个token给前端
- 以后用户每次请求都会携带这个token来进行验证
- 当用户请求其他业务需要当前用户信息的时候,可以直接获取当前登录人信息,比如:创建数据需要知道创建人
所以我们可以使用ThreadLocal来进行存储当前请求(线程)的用户数据,它有两个特点
- 线程之间的隔离
- 同一个线程数据共享
四、自定义授权管理器
JwtAuthorizationManager 是一个授权管理器,它实现了 Spring Security 的 AuthorizationManager 接口,用于处理用户的授权逻辑。
核心功能
JwtAuthorizationManager 的主要职责是:
- 验证用户的 userToken 和 jwtToken。
- 检查用户是否被剔除。
- 根据请求的路径和用户权限,决定是否允许用户访问资源。
- 处理jwtToken 的续期逻辑,确保令牌在接近失效时可以延长有效期。
本人水平有限,有错的地方还请批评指正。
标签:令牌,java,项目,day06,用户,线程,管理器,认证,权限 From: https://blog.csdn.net/Shine19/article/details/144926595什么是精神内耗?
简单地说,就是心理戏太多,自己消耗自己。
所谓:
言未出,结局已演千百遍;
身未动,心中已过万重山;
行未果,假想灾难愁不展;
事已闭,过往仍在脑中演。