概述:
最近在开发一个基础应用服务系统,利用加密的token标识来校验访问者的身份。几乎每一个接口都需要校验token。故打算采用aop面向切面编程,一次性对所有接口进行身份认证;
遇见的问题:
切面配置没有问题的情况下,junit单元测试调用controller里面的方法,可以触发切点,实现切面编程。但是web部署到tomcat后,直接url访问触发切点失败!
详情描述:
切面类:
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
/**
*
* @Description: TODO( token的校验 )
* @author: mayao
* @date 2016年10月20日 下午5:47:37
*/
@Aspect
@Component
public class UserTokenInterceptor {
//controller包的子包里面任何方法
@Pointcut("execution(public * com.test.controller.*.*(..))")
public void checkToken(){
}
@Before("checkToken()")
public void beforeCheckToken(){
System.out.println("调用方法之前。。。。");
}
@AfterReturning("checkToken()")
public void afterCheckToken(){
System.out.println("调用方法结束之后。。。。");
}
//抛出异常时才调用
@AfterThrowing("checkToken()")
public void afterThrowing()
{
System.out.println("校验token出现异常了......");
}
}
控制器:
/**
*
* @Description: TODO( 请求token )
* @author: mayao
* @date 2016年10月19日 下午5:11:25
*/
@Controller
@RequestMapping("/mayao")
public class TokenController {
@RequestMapping(value="/test