如何在匿名用户中获取用户信息可以访问spring security中的页面

时间:2013-01-29 06:15:00

标签: spring-security

公共页面,例如网站的第一页,所有用户都可以访问,包含匿名用户。 所以我在applicationContext-security.xml中配置它,如下所示:

 <intercept-url pattern="/index" access="permitAll" />
 <intercept-url pattern="/css/**" access="permitAll" />
 <intercept-url pattern="/javascript/**" access="permitAll" /> 
 <intercept-url pattern="/**"
        access="hasAnyRole('ROLE_MANAGER','ROLE_ORGANIZATION')" />

如果使用signin.I我想使用以下代码获取用户信息:

SecurityContextHolder.getContext()
                .getAuthentication().getPrincipal()

即使我已登录,我也会失效。

我认为是配置错误。谁知道为什么或在哪里?感谢

1 个答案:

答案 0 :(得分:2)

您的代码没有任何问题。通常在匿名用户的情况下,您的主体将是一个简单的字符串“anonymousUser”。我认为主要的问题是没有调用 AnonymousAuthenticationFilter.doFilter(...) AnonymousAuthenticationFilter 负责将匿名身份验证注入SecurityContextHolder。确保HTTP请求与

相关
SecurityContextHolder.getContext().getAuthentication().getPrincipal()

调用由Spring Security过滤器链覆盖。在 AnonymousAuthenticationFilter.doFilter()中制作制动点。如果未调用,请检查您的web.xml。确保您的过滤器链适用于所有HTTP调用:

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>