SecurityContextHolder.getContext().getAuthentication(); 无法获取到身份认证对象

使用spring-security进行登录验证通过后并将认证后的authentication存放在securityContext里面了,在调用MyAccessDecisi... 使用spring-security进行登录验证通过后 并将认证后的authentication 存放在securityContext里面了,在调用MyAccessDecisionManager的decide()方法无法获取到存放的身份认证对象登录成功:成功后 将身份保存到了securityContext里面登录成功后其他url权限效验
在MyAccessDecisionManager类中
@Override
public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes)
throws AccessDeniedException, InsufficientAuthenticationException {
中的 authentication 始终获取的是ROLE_ANONYMOUS 获取不到登录验证成功后的权限
展开
 我来答
A1620921354
2020-10-03 · TA获得超过5810个赞
知道答主
回答量:388
采纳率:100%
帮助的人:16.2万
展开全部

关键就是要把filters="none" 变化为相应的权限如access="permitAll"

这类的SecurityContextImpl securityContextImpl = (SecurityContextImpl)

request.getSession().getAttribute("SPRING_SECURITY_CONTEXT");

删除 <intercept-url pattern="/aaa/bbb*" filters="none"/> 类似配置

扩展资料:

修改SecurityContextHolder的工作模式

SecurityContextHolder可以工作在以下三种模式之一:

MODE_THREADLOCAL (缺省工作模式)

MODE_GLOBAL

MODE_INHERITABLETHREADLOCAL

修改SecurityContextHolder的工作模式有两种方法 :

SecurityContextHolder会自动从该系统属性中尝试获取被设定的工作模式

程序化方式主动设置工作模式的方法

调用SecurityContextHolder静态方法setStrategyName()

设置一个系统属性(system.properties) : spring.security.strategy;

威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式