SecurityContextHolder.getContext().getAuthentication(); 无法获取到身份认证对象
在MyAccessDecisionManager类中
@Override
public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes)
throws AccessDeniedException, InsufficientAuthenticationException {
中的 authentication 始终获取的是ROLE_ANONYMOUS 获取不到登录验证成功后的权限 展开
关键就是要把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 广告