lin-cms-spring-boot
lin-cms-spring-boot copied to clipboard
LocalUser 对象内存储的类型冲突问题
此问题属于 #185 的衍生问题。
LocalUser
对象是线程安全的当前登录用户,除了 LinCMS 系统内的管理员用户(对应模型为UserDO
)外,C端用户也需要同样设置到请求上下文中,甚至说除了用户需要设置到请求上下文中,其他数据也可能需要设置到请求上下文中。现在的 LocalUser 只能 set 和 get UserDO
类型的对象:
https://github.com/TaleLin/lin-cms-spring-boot/blob/bd6b0c8692b95bafd14b8ba0585ebb64b35d8788/src/main/java/io/github/talelin/latticy/common/LocalUser.java#L12
这样 LocalUser 基本就不可复用了,如果 C 端用户同样需要设置线程安全的当前登录用户,就不得不重新封装一个类,但里面的代码除了所存储的类型基本都一样的,可以考虑把ThreadLocal
中的泛型UserDO
类型改为Map<String, Object>
,并将类重命名为 LinThreadLocal
:
private static ThreadLocal<Map<String, Object>> threadLocal = new ThreadLocal<>();
这样无论开发者想要在ThreadLocal
中set
和get
什么类型的对象,就都可以通过该类来操作了。