近日在使用shiro做权限认证的过程中发现一个奇怪的问题,由于工作较忙没时间研究源码,在此记录一下解决方法。
场景描述:
内部使用的管理后台,要求用户角色权限简单可配置。
使用技术:
spring boot, spring mvc,shiro,jwt(前后端分离)等。
问题描述:
token放置在request的header里,获取token决定使用Spring中的 RequestContextHolder.getRequestAttributes() 方式获取。
返回数据是json格式,使用fastjson整理,设置 HttpMessageConverter 使用 如下方式:
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// 略.....
}
}
现象:
1、当请求链接(如/login)设置为shiro的anon 不拦截时使用RequestContextHolder.getRequestAttributes() 可以获取到request
2、当请求链接设置为shiro拦截