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