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

Spring security 如何在spring security中获取匿名用户可访问页面中的用户信息,spring-security,Spring Security,公共页面(例如网站的第一页)包含匿名用户,用户可以访问该页面。 因此,我在applicationContext-security.xml中对其进行如下配置: <intercept-url pattern="/index" access="permitAll" /> <intercept-url pattern="/css/**" access="permitAll" /> <intercept-url pattern="/javascript/**" acce

公共页面(例如网站的第一页)包含匿名用户,用户可以访问该页面。 因此,我在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,我也会得到null


我认为是配置错误。有人知道为什么或者在哪里吗?谢谢

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

SecurityContextHolder.getContext().getAuthentication().getPrincipal()
呼叫由Spring安全过滤器链覆盖。在匿名AuthenticationFilter.doFilter()中设置制动点。。如果未调用,请检查web.xml。确保筛选链已应用于所有HTTP调用:

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

springSecurityFilterChain
/*

谢谢。登录后,我会收到一个字符串“匿名用户”,而不是“用户信息”。这就是问题所在。如何在这些页面中获取用户信息?您必须登录。然后您将获得org.springframework.security.core.userdetails.User实例,而不是字符串“anonymousUser”
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>