gpt4 book ai didi

java - SecurityContextHolder 线程安全吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:11:42 27 4
gpt4 key购买 nike

我使用 SecurityContextHolder 和自定义 UserDetailsS​​erviceSecurityContextHolder 获取 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com