使用AOP校验用户登录和异常处理-2020-10-26
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用AOP校验用户登录和异常处理-2020-10-26相关的知识,希望对你有一定的参考价值。
参考技术A 用户登录验证在所有业务中基本都有涉及,这里使用AOP的方式进行用户登录的校验拦截前提:当前项目为Spring-Boot的项目,项目在IDEA下使用了lombok插件
由于SpringBoot项目的SPI机制,此处引入依赖包之后,就不用额外做配置了
用于在需要校验登录的方法入口处做标记
创建一个Aspect用来处理做了上述自定义注解标记的方法
经过上述步骤之后,在需要验证的方法上打上 @CheckLogin 的自定义注解,就可以实现token的校验了
这里使用的是AOP的环绕切入,原理是将需要调用的目标方法包入 CheckLoginAspect 的前置逻辑中@Around的意思为环绕切入,在方法前通过获取Request并从Request中获取到header,然后再从header中获取到“X-Token”,之后的方法就是通过jwt工具类进行校验和一些参数放置到request的操作,直到执行 point.proceed(); 方法才是需要调用到的目标类
几个注解的含义
这里检测到token异常之后,会抛出一个 SecurityException 实际上这个只是继承了 RuntimeException ,方便在异常处理时分辨异常的类型
接下来,添加一个全局处理异常的Handler
以往我再处理异常时,都会将http的状态码以200返回,先告诉前端请求成功,然后会在多给一个code来表示异常,最近看了挺多资料,像这类的异常直接以Http的Status返回对应的异常码其实是更加清晰的,前端人员在对接时,也不用去过多的理解业务中自定的那堆code,因为HttpStatus是统一的。
这里可以参考 org.springframework.http.HttpStatus 的状态码
以登录授权为例,如果校验不通过时,返回一个401的状态,此时,两端在接口对接和理解上,就能更加的统一
上面的例子在测试之后的到的结果
在浏览器上操作可以看到
此处做个记录,后续业务中,尽量按照统一的标准去实现。 加油~~!
以上是关于使用AOP校验用户登录和异常处理-2020-10-26的主要内容,如果未能解决你的问题,请参考以下文章