Java Spring Security getPrincipal()方法返回anonymousUser

Java Spring Security getPrincipal()方法返回anonymousUser,java,spring,spring-mvc,spring-security,Java,Spring,Spring Mvc,Spring Security,在spring web应用程序中,我希望在控制器中获得经过身份验证的用户: Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 但委托人的价值是“匿名用户”,尽管我已经登录了。 如何获得经过身份验证的用户? 我在spring-security.xml中的配置: <http auto-config="true" request-matcher="regex">

在spring web应用程序中,我希望在控制器中获得经过身份验证的用户:

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
但委托人的价值是“匿名用户”,尽管我已经登录了。 如何获得经过身份验证的用户? 我在spring-security.xml中的配置:

<http auto-config="true" request-matcher="regex">
    <intercept-url pattern="/welcome*" access="ROLE_USER" />
    <form-login login-page="/login" default-target-url="/welcome"
        authentication-failure-url="/loginfailed" />
    <logout logout-success-url="/logout" />
</http>

我不确定是否理解,但请尝试此方法

<http auto-config="true" request-matcher="regex">
  <intercept-url pattern="/welcome*" access="ROLE_USER" />
  <intercept-url pattern="/*" access="IS_AUTHENTICATED,IS_AUTHENTICATED_ANONYMOUSLY"/>


当您获得“匿名用户”时,您请求了哪个URL?SS应该如何发挥作用?您将其配置为只截取
/welcome*
…但我希望text.html页面可用于已验证和未验证的用户非常感谢您的想法!它对我来说是有效的,但是对于Access =“RoLyAuthor,RoLy匿名”,而不是Access =“IsAuthDebug,IsAudioTimeAdS匿名”@ Ukrainianguy,很高兴它工作,考虑接受答案。code>ROLE\u匿名不正确,它是
ROLE\u匿名
。您是否需要检查
角色或
是取决于上下文。从技术上讲,两者之间只有细微的区别。