springboot中使用切片做身份信息认证

2019-10-22  本文已影响0人  writeanewworld

1.简介

之前数据服务的项目中,需要先对用户对称加密后穿过来的账号信息进行校验,判断这个账号有没有钱,够不够调用我们的服务获取数据。在这种情况下,就需要一个拦截之类的东西做预先判断。由于拦截器,过滤器都有一定的不足(没法获取过多的用户信息)。这里就使用到了aspect切片。

2.控制器/对外暴露的接口

@RestController
@RequestMapping("/riskc")
public class RiskCController{

    private static final  Logger LOG = LoggerFactory.getLogger(RiskCController.class);
    
   @RequestMapping(value = "/query")
    public SimpleReturnResponse riskCQuery(AuthRiskPojo pojo){
        return authRiskCService.riskcQuery(pojo);
    }

}

3.此控制器对应的切片写法

@Component
@Aspect
public class CarRiskCAspect{
    private static fianl Logger LOG = LoggerFactory.getLogger(CarRiskCAspect.class);

//要切入的位置
@Pointcut("execution(*  com.shuhe360.auth.auth_main_car.web.contrllor.RiskCController.*(..))")
public void executeService() {}
//执行处理
@Around("executeService()")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
  //1.获取当前执行的方法名称
  Signature s = pjp.getSignature();
  MethodSignature ms = (MethodSignature)s;
  String MethodName = ms.getMethod().getName();
  LOG.info("aspect method name is:{}",MethodName);

//2.获取到方法名(riskCQuery)之后,可以通过方法名获取一些必须的信息,比如存放在配置文件中通过@ConfigurationProperties(prefix = "")拿到的产品号的配置信息

//3.最重要的一点是我这里可以拿到用户请求接口传过来的参数 pjp.getArgs[0];
//账号匹配 /  账号权限认证  / 账号余额查询 / 请求参数非空判断 /
 AuthRiskPojo pojo = (AuthRiskPojo) pjp.getArgs()[0];
 LOG.info("请求参数.{}", JSON.toJSONString(pojo));
}
}

4.总结

切片(AOP),作用还是很强大的,不用拦截器 不用过滤器 不用springsecurity,完全可以一个切片全部搞定~~~

上一篇下一篇

猜你喜欢

热点阅读