UserDetails的自定义实现示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UserDetails的自定义实现示例相关的知识,希望对你有一定的参考价值。

我正在寻找一个在Spring Security 3中制作自定义UserDetails对象的示例。我希望有人可以提供帮助,谢谢。

答案

这是我用过的东西:

public class CustomUserDetails implements UserDetails {
    private  User user;

    public CustomUserDetails(final User _user) {
            this.user = _user;
    }

    public CustomUserDetails() {
    }

    @Override
    public Collection<GrantedAuthority> getAuthorities() {
             final Set<GrantedAuthority> _grntdAuths = new HashSet<GrantedAuthority>();

     List<UserRole> _roles = null;

     if (user!=null) {
             _roles = user.getRoles();
     }

     if (_roles!=null) {
             for (UserRole _role : _roles) {
                     _grntdAuths.add(new GrantedAuthorityImpl(_role.getRole()));
             }
     }

     return _grntdAuths;
    }

    @Override
    public String getPassword() {
            return user.getPassword();
    }
 @Override
    public String getUsername() {
            if (this.user == null) {
                    return null;
            }
            return this.user.getUser_name();
    }

    @Override
    public boolean isAccountNonExpired() {
            return this.user.isAccountNonExpired();
    }

    @Override
    public boolean isAccountNonLocked() {
            return this.user.isAccountNonLocked();
    }

    @Override
    public boolean isCredentialsNonExpired() {
            return this.user.isCredentialsNonExpired();
    }

    @Override
    public boolean isEnabled() {
            return this.user.isEnabled();
    }

    public User getUser() {
            return user;
    }

    @Override
    public String toString() {
            return "CustomUserDetails [user=" + user + "]";
    }
}

以上是关于UserDetails的自定义实现示例的主要内容,如果未能解决你的问题,请参考以下文章

自定义 SAMLUserDetailsS​​ervice 未填充自定义 UserDetails

如何创建数据类实现 Spring Security 特定的 UserDetails

找到我的自定义代码片段 Xcode 6?

带有 JWT 自定义 UserDetails 的 Spring OAuth - 在 JwtAccessTokenConverter 中设置主体

片段中的自定义列表适配器

Three.js 中的自定义纹理着色器