首页 > springMVC+Shiro的项目中AOP拦截Controller后不能访问!

springMVC+Shiro的项目中AOP拦截Controller后不能访问!

在spring mvc AOP+Shiro的项目中,在controller 方法上使用了shiro的权限注解@RequiresPermissions(":"),再用aop去拦截controller的返回值,结果导致加了controller不能访问!

AOP拦截类

@Component
@Aspect
public class ControllerResultAspect {
    private static Logger logger = LoggerFactory.getLogger(ControllerResultAspect.class);
    @AfterReturning(pointcut = "execution(* com.cmp.**.controller.*.*(..))", returning = "resultMap")
    public void addResourceCacheableAdvice(JoinPoint joinpoint,Object resultMap) throws Throwable {
        if(resultMap!=null && BeanUtil.isIncludeEntity(resultMap)){
            logger.warn("MVC Contoller reutun value contains Entity "+joinpoint.getSignature().toString());
        }
        
    }

}

springmvc-servlet.xml配置文件

...
<bean  class="com.kmp.platform.aop.ControllerResultAspect" />
<aop:aspectj-autoproxy proxy-target-class="true" />
...

访问WorkerController时报的异常信息

严重: Servlet.service() for servlet [springmvc] in context with path [] threw exception [No adapter for handler [com.kmp.worker.controller.WorkerController@25ea1606]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler] with root cause
javax.servlet.ServletException: No adapter for handler [com.cmp.worker.controller.WorkerController@25ea1606]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler
    at org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter(DispatcherServlet.java:1128)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:903)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)

我也遇到这个问题,怎么解?请问楼主解决了嘛


我花了一个礼拜,整合了下SpringMvc + Mybatis +Shiro +Redis的Demo项目。你可以看看。可以多多交流,我特别喜欢shiro!
http://www.sojson.com/shiro

【热门文章】
【热门文章】