作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用 SecurityContextHolder
和自定义 UserDetailsService
从 SecurityContextHolder
获取 UserDetails
:
Object o = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
UserDetailsDTO user = (UserDetailsDTO) o;
我遗漏了空检查等,但就是这样。我在 @Aspect
的 @Around
切入点中使用它:
@Around("execution(* user.service.*.*(..))")
public Object audit(ProceedingJoinPoint call) throws Throwable {
// get user id
// add audit row in db
}
查看 SecurityContextHolder
类,它默认使用 ThreadLocal
,但切入点似乎也有某种封装的线程逻辑。
是否可能存在用户冲突(即从一个 session 访问 UserA 以获取另一个并发 session 中的 UserB 审核事件),或者可能完全是一个空用户。
是否有更好的方法来获取凭据/用户配置文件?
最佳答案
是的,默认策略 (MODE_THREADLOCAL
) 是线程安全的(只要您不尝试即时更改策略)。但是,如果您希望生成的线程继承父线程的 SecurityContext
,则应设置 MODE_INHERITABLETHREADLOCAL
。
方面也没有任何“线程逻辑”,它们与建议的方法在同一线程中执行。
关于java - SecurityContextHolder 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2291942/
我是一名优秀的程序员,十分优秀!