java - Spring Security getPrincipal() 方法返回 anonymousUser

标签 java spring spring-mvc spring-security

在我的 spring web 应用程序中,我想在我的 Controller 中获得一个经过身份验证的用户:

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

但是主体的值是“anonymousUser”,尽管我已经登录了。 如何获得经过身份验证的用户? 我在 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"/>

关于java - Spring Security getPrincipal() 方法返回 anonymousUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665886/

相关文章:

Spring 和 tomcat 或 Spring 和 Glassfish

spring - 原始类型的属性不允许使用“lateinit”修饰符 - Kotlin

java - Apache Tiles 替代品

spring-mvc - 嵌套图 block 定义不起作用

java - 如何自动选择所选项目上方的所有项目

java - Spring Bean 初始化顺序

java - 在 ImageView 上添加多个效果

java - 应用程序监听器未收到事件通知

java - 最新 JAXB 版本 (Java 7) 中的 XmlID/XmlIDREF 和继承

java - 如何以编程方式使 View 在布局上居中?