美文网首页
springboot中使用切片做身份信息认证

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

作者: writeanewworld | 来源:发表于2019-10-22 14:15 被阅读0次

    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,完全可以一个切片全部搞定~~~

    相关文章

      网友评论

          本文标题:springboot中使用切片做身份信息认证

          本文链接:https://www.haomeiwen.com/subject/vwjqvctx.html