
回复
作者 | IT学习道场
来源 | IT学习道场(ID:itlearndojo)
兄弟们,你是否见过,很多项目或者框架中在项目的任何位置,都可以通过上下文或者某些util直接获取贯穿整个请求的对象,比如用户对象,例如在你任意的代码里,直接调用 SecurityUtil.getCurrentUser();就可以得到当前登录的用户信息,简单,快捷,随用随取,那叫一个方便,下面让老王带你一探究竟
其实就是在程序的入口获取到用户信息,并且把用户信息存的ThreadLocal中,废话不多说,直接上代码
用户上下文创建,采用netty中FastThreadLocal来实现,告别内存泄漏,实现快准稳
引入maven依赖
登录用户上下文
登录token拦截器阉割版
拦截器注册到拦截器容器中使之生效
流程:request --> loginInterceptor --> preHandle --> token获取并且解析出用户信息 --> set到UserContext的FastThreadLocal中,获取,用UserContext的get就行,不存在内存泄漏问题,FastThreadLocal后端会有定时器自动清理,不需要操心,或者为了最好的安全起见,可以在后置处理中进行FastThreadLocal的清理