Dro*_*roo 6 java spring spring-mvc spring-security
我使用SecurityContextHolder和定制UserDetailsService,以获得UserDetails来自SecurityContextHolder:
Object o = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
UserDetailsDTO user = (UserDetailsDTO) o;
Run Code Online (Sandbox Code Playgroud)
我遗漏了空检查等,但这就是主意.我在一个@Around切入点中使用它@Aspect:
@Around("execution(* user.service.*.*(..))")
public Object audit(ProceedingJoinPoint call) throws Throwable {
// get user id
// add audit row in db
}
Run Code Online (Sandbox Code Playgroud)
看一下这个SecurityContextHolder类,它ThreadLocal默认使用一个,但切入点的东西似乎也有某种封装的线程逻辑.
是否可能存在用户冲突(即,在一个会话中为另一个并发会话中的UserB审核事件访问UserA),或者可能是空用户.
有没有更好的方法来获取凭据/用户配置文件?
是的,使用默认策略(MODE_THREADLOCAL)是线程安全的(只要您不尝试动态更改策略).但是,如果您希望生成的线程继承SecurityContext父线程,则应设置MODE_INHERITABLETHREADLOCAL.
方面也没有任何"线程逻辑",它们在与建议方法相同的线程中执行.
| 归档时间: |
|
| 查看次数: |
7092 次 |
| 最近记录: |