【发布时间】:2013-01-03 21:40:38
【问题描述】:
我一直在研究使用 Spring Security 的应用程序。我对 Spring Security 很陌生,最终遇到了类似于 this 和 this 的问题。但是有点不一样。
我通过这种方式进行手动身份验证:
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);
Authentication authentication = this.authenticationProvider.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(authentication);
页面加载后一切正常。但是,当我在应用程序中导航时,似乎我失去了我的 SecurityContext。 (如果用户已登录,我的状态栏会显示用户名)
我通过这种方式了解我的上下文:
SecurityContextHolder.getContext()
更重要的是,在某些不正确的加载之后,有时它会正确加载上下文并不会完全丢失。似乎我在一个会话中有多个上下文(我有 HttpSessionListener 和 sessionCreated 只触发一次)。我尝试打印出上下文的对象哈希并注意到那里 是几个不同的哈希重复。只有一个与我的连接用户有关,其他则不是。
所以我假设一个会话中有多个上下文(如果这可能的话)。 我希望我清楚地解释了一切。 如果有人可以为我提供一些帮助,我将不胜感激。
【问题讨论】:
标签: authentication spring-security httpsession pre-authentication security-context