@before也是可以做到的,但是终止当前请求的话,我只会通过异常的方式结束,所以使用@around来处理权限问题.
自定义注解代码:
@Target({
ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Pemi02 {
}
用来校验权限的代码:
@Aspect
@Component
public class PemiAdvice02 {
@Around("@annotation(pemi02)")
public Object pemiTest(ProceedingJoinPoint point, Pemi02 pemi02) throws Throwable {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
if (StringUtils.isNotBlank(token)) {
Object proceed = point.proceed();
return proceed;
}
return ResponseResult.fail(null,"无权限");
}
}
测试代码:
@Pemi02
@RequestMapping(value = "adAreaLogin", method = RequestMethod.POST)
public ResponseResult adAreaLogin(@RequestBody AdAreaLoginParam param) {
log.info("AdAreaLoginController adAreaLogin:");
return ResponseResult.success("", "ok");
}