关于spring Security 无法获取当前登录人的权限身份信息? ROLE_ANONYMOUS 2C

情景描述: 用户成功登录后,点击url访问后台接口,会先去调用MyAcces sDecisionM anager类的 decide(Authentication authentication, Object object, Collection configAttributes) 进行权限效验

参数 authentication 获取的信息 却是 ROLE_ANONYMOUS 状态的,获取的并不是当前登录人所拥有的信息。

代码1:登陆成功后的操作
图片说明

代码2: 前端访问后台接口时 验证权限
图片说明

SecurityContextHolder.getContext().getAuthentication(); 得到的是 ROLE_ANONYMOUS

权限验证时获取的身份对象和成功登陆后获取的身份对象不一致,小弟毫无头绪,再次来问下大佬们?分享下你们的思路

4个回答

最近在用前后端分离做项目也遇到了兄台这样的情况,请问兄台解决了吗

哥们,解决了吗,我也遇到你这问题了,
用户已经登录,日志也打印"Authentication success. Updating SecurityContextHolder to "成功字样 ,
但是跳转时,又变成了ROLE_ANONYMOUS这个..
我发现跳转时" SecurityContextHolder now cleared, as request processing completed "有这们的一个日志
你是怎么解决的

可以检查下登陆是否成功,ROLE_ANONYMOUS 是匿名用户,说明用户未登录

qq_24857561
qq_24857561 有解决吗
6 个月之前 回复
lbyjwwyqt
lbyjwwyqt 我自定义了一个登陆成功后的处理类,登陆后断点进入该类,并且获取到了信息,详见图1中,讲道理应该是登陆成功了
大约 3 年之前 回复

前后端分离时,每次请求无状态,是不会记住用户的Authentication的,所以当然是匿名(ROLE_ANONYMOUS )。_
想要获取Authentication除非在登陆一次,那这样有事多余的,应为我们这样设计就是为了免登录才用的token,所以感觉这种并不适合前后端分离的无状态请求。
在FilterInvocationSecurityMetadataSource里完全可以做完权限是否授权

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐