大概思路:
1.自定义登录态注解
2.编写关于自定义注解的过滤器(因为过滤器的执行顺行在拦截器之前),实现HandlerInterceptor
2.1: 利用preHandle特性(方法执行之前)根据请求头中的sessionId检查是否是登录态, 然后根据ThreadLocal(当前线程变量),设置登录态变量(用户信息和sessionId)
2.2: 在controller方法执行完成后, 利用afterCompletion特性(方法执行完成后), 清除登录态变量
方案优势:
在一个controller类上或者方法上有这个登录态注解, 就会对用户信息进行检查和判断, 实现用户鉴权功能. 并且在一个请求中, 可以实现用户变量共享, 避免传参. 而且在rpc调用中依然可以使用,很是方便