获取用户主体的自定义属性

发布于 2024-10-16 20:28:26 字数 223 浏览 7 评论 0原文

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

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

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

I have a custom user details object with first name part of it. Below username works, but I want something like the second to work. How can I access this custom property?

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

往日 2024-10-23 20:28:26

我猜你已经尝试过上面的方法了,但没有成功。

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

I presume that you tried the above and that it didn't work.

Check your custom user details class to make sure that the capitalization of the getter and setter methods for the 'firstname' property are correct.

心清如水 2024-10-23 20:28:26

对我有用。这是我的测试代码:-

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;

Works for me. Here's my test code:-

CustomUserDetails class

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

    ...
}

Custom tag in JSP

The following tag returns hello.

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

By the way, make sure you are not putting getFirstName() into the anonymous class, because that will not work.

What I'm trying to say here is, don't do this:-

...

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

    public String getUsername() {
        return "test";
    }

    ...    
};

... do this:-

...

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

return csd;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文