【问题标题】:Get Custom Property Of User Principal获取用户主体的自定义属性
【发布时间】:2011-02-10 00:02:50
【问题描述】:

我有一个包含名字部分的自定义用户详细信息对象。下面的用户名有效,但我想要第二个类似的东西。如何访问此自定义属性?

<security:authentication property="principal.username" />

<security:authentication property="principal.firstname" />

【问题讨论】:

    标签: spring-security principal


    【解决方案1】:

    我认为您尝试了上述方法但没有成功。

    检查您的自定义用户详细信息类,确保“名字”属性的 getter 和 setter 方法的大小写正确。

    【讨论】:

      【解决方案2】:

      为我工作。这是我的测试代码:-

      CustomUserDetails 类

      public class CustomUserDetails implements UserDetails {
          public String getFirstName() {
              return "hello";
          }
      
          ...
      }
      

      JSP 中的自定义标签

      以下标签返回hello

      <security:authentication property="principal.firstName" /> 
      

      顺便说一句,请确保您没有将getFirstName() 放入匿名类中,因为这样不起作用。

      我想说的是,不要这样做:-

      ...
      
      return new UserDetails() {
          // adding extra method here will not work
          public String getFirstName() {
              return "hello";
          }
      
          public String getUsername() {
              return "test";
          }
      
          ...    
      };
      

      ... 这样做:-

      ...
      
      // this class implements UserDetails and contains getFirstName()
      CustomUserDetails csd = new CustomUserDetails();
      csd.set...(...)
      ...
      
      return csd;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-09-27
        • 1970-01-01
        • 2014-02-16
        • 2013-05-30
        • 1970-01-01
        • 2010-10-29
        • 2017-09-28
        相关资源
        最近更新 更多