【AOP系列】后端登录这样写才香
在日常开发过程中,基本很多接口都会通过token的方式来检测当前用户的登录状态。
只有登录过的用户才能正常访问接口。
一方面可以防止接口的恶意调用,
另一方面可以省去前端每次请求接口时 可以省略userId字段。
后端直接从userId即可。
那么一个好的登录到底应该怎么写呢?
依赖
1 | <!--java-jwt TokenUtil类依赖--> |
工具类
TokenUtil.java
1 | import com.auth0.jwt.JWT; |
登陆时主要通过TokenUtil来根据userId生成token
调用接口时需要校验token,并且从token中获取userId
为了方便接口的管理,我们通过两个注解来管理接口的登录检测
登录注解开发
@CheckLogin
可以用在类上,也可以用在方法上,
1 | import java.lang.annotation.*; |
@IgnoreLogin
主要用在方法上
1 | import java.lang.annotation.*; |
注解的实现
1 | import lombok.extern.slf4j.Slf4j; |
注解的使用
token的校验
Service层获取UserId
这里准备了两个接口,分别登录两个账号后,用两个不同的token请求这两个接口
这里使用 IntelliJ IDEA 插件 HTTP Client请求接口
最后结果,不仅使用token对接口进行了检测,而且通过HttpRequest对象存储了用户id,保证每个请求都能方便的拿到用户id,
全局拿用户信息
OK成功舒适的拿到用户id后,我们可以在任何时间,任何Service中直接获取用户信息。
在UserService中写一个getCurrUser方法来获取当前对象;
好了,全局获取User信息。而不用考录前端是否传值,只要前端请求接口时有token,那么这个请求的任何时间都能可以通过有注入UserService并调用get.CurrUser()即可拿到用户对象
1 | { |