AOP自定义权限注解

@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");
    }

结果示例:

结果示例

猜你喜欢

转载自blog.csdn.net/weixin_43555115/article/details/108797611