AuthController退出登录接口加了@RequiresAuthentication注解,作用是必须登录后才能访问该接口,但是加了该注解之后导致整个controller找不到了,访问这个controller的其他接口都报404。
原因:
后来发现是因为**@RequiresAuthentication**默认禁止本类使用任何注解的权限。导致controller不能被spring管理
解决:
在spring配置类中加入下面的代码 ,允许添加*@RequiresAuthentication**注解的类使用其他注解
@Bean
public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {
DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
/**
* setUsePrefix(false)用于解决一个奇怪的bug。在引入spring aop的情况下。
* 在@Controller注解的类的方法中加入@RequiresRole等shiro注解,会导致该方法无法映射请求,导致返回404。
* 加入这项配置能解决这个bug
*/
defaultAdvisorAutoProxyCreator.setUsePrefix(true);
return defaultAdvisorAutoProxyCreator;
}