笔者新建了一个子模块,发现页面有按钮权限,但是Controller层使用的@RequiresPermissions注解没有校验通过,总是报没有权限的异常。
后跟踪源码发现,一个名叫 HeaderInterceptor 的过滤器没有被自动装配,导致ThreadLocal中的用户等信息没有获取到,这个过滤器是在
com.ruoyi.common.security.interceptor 的包下。
不知何故WebMvcConfig 没有被自动装配到新模块上,模块是将ruoyi-modules作为父模块
笔者没有想到更好的办法,望有大佬可以提供更好的办法,目前的解决办法是在新建的模块重新写一个WebConfig类,实现同样的功能,代码如下:
/**
* 拦截器配置
*
* @author ruoyi
*/
@Configuration
public class WebMvcConfigBiz implements WebMvcConfigurer
{
/** 不需要拦截地址 */
public static final String[] excludeUrls = { "/login", "/logout", "/refresh" };
@Override
public void addInterceptors(InterceptorRegistry registry)
{
registry.addInterceptor(getHeaderInterceptor())
.addPathPatterns("/**")
.excludePathPatterns(excludeUrls)
.order(-10);
}
/**
* 自定义请求头拦截器
*/
public HeaderInterceptor getHeaderInterceptor()
{
return new HeaderInterceptor();
}
}
这样就暂时解决了。