模式切换
使用 Shiro 导致接口调用 404
【问题】
在 Spring Boot 整合 Shiro 的项目中,使用 AOP 实现自定义注解实现接口记录日志功能时,发现直接导致所有接口报 404 错误:
bash
{
"timestamp": "2024-03-31T00:58:52.395+08:00",
"status": 404,
"error": "Not Found",
"path": "/member/list/1/6"
}
【解决】
在查阅资料及不断尝试后,判断为 Shiro 问题。
为了保证 @RequiresPermissions 等注解生效,需要在 DefaultAdvisorAutoProxyCreator 这个后置处理器,需要在其他的 advisor 之后执行。
java
public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
defaultAdvisorAutoProxyCreator.setUsePrefix(true); // 设置为true,保证 @RequiresPermissions 等注解起作用
return defaultAdvisorAutoProxyCreator;
}