使用redis存储用户权限修改用户名时忽略的问题

项目:springboot+springSercurity+redis

问题类型:token

时间:2024.6.11

token

        1.根据用户名和id生成

        2.根据id生成

        3.根据用户名生成

        4.其他(根据项目其他需求或功能在定义)

使用情况

        在以往的项目中,我是使用的<<1.根据用户id和用户名生成token>>

发现问题

        当我修改用户名之后,

                1.刷新页面会回到登录界面,并弹出提示信息:执行了全局异常,后端报错:java.lang.NullPointerException

                2.不刷新进行其他操作均可,操作日志中记录的操作人为修改前用户。

使用开发人员工具进行网络监控:刷新页面会重新发送请求获取用户信息

查看代码,寻找原因:

        1.查看安全框架配置类:无关

        2.查看安全框架配置类中配置的用户认证过滤器:

                原因a:通过用户名存储了用户的权限信息

                原因b:将通过用户id和用户名生成的token响应给了前端

        3.查看安全框架配置类中配置的拦截过滤器:

                原因c:获取请求头中的token并解析出用户名,然后根据用户名获取权限

        4.查看获取用户信息方法:

                原因d:传参request,从中获取token并解析用户名,根据用户名获取用户信息,解析到的用户名为修改前的用户名,数据库中无此用户名,空指针异常

解决方案:

        1.使用id生成token,并通过id存储用户权限

        2.仍使用用户名生成token,每次修改用户名重新存储权限,并生成新token响应前端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值