JavaWeb项目中调用静态方法获取当前用户信息

JavaWeb项目中调用静态方法获取当前用户信息


用途
[1]简化代码
[2]简化代码
[3]简化代码
[4]将各种渠道的用户信息获取方式统一
思路
其实已经有框架实现这个功能,比如shiro,可以通过获取Subject然后获取Session,之后从session中获取当前用户
but!
如果这个用户是从对外提供的接口处管理呢?如果这个对外提供的接口不需要使用用户名密码登录呢?如果第三方开发不希望不断的维持同一个sessionId,而是通过token的方式表明身份呢?
好吧,记录一下思路
使用一个拦截器统一拦截所有请求,在拦截器中识别请求的用户信息,将用户信息放到ThreadLocal中,这样在请求产生的线程中就可以通过ThreadLocal获取当前的用户信息.之后只需实现一个工具类,在工具类的静态方法中从TheadLocal中获取用户信息就可以了
PS:
[1]注意ThreadLocal的清理,ThreadLocal的声明周期和线程同.所以如果框架使用了线程池,线程不会被真正关闭 后续会出问题.记得在请求完毕后清理ThreadLocal.[至于时机… Filter本身就有两个执行时机好吧.一个是执行前一个是执行后]
[2]因为是思路了,具体的细节还要根据应用项目的实际情况踩坑.所以说的时候忽略了细节

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章