【问题标题】:Example of custom implementation of UserDetailsUserDetails 的自定义实现示例
【发布时间】:2011-10-12 09:01:43
【问题描述】:

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

【问题讨论】:

    标签: spring spring-security


    【解决方案1】:

    这是我用过的:

    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 + "]";
        }
    }
    

    【讨论】:

    • 顺便说一句,User 是我的 User 实体的普通 bean
    • 如果您阅读了 UserDetails 规范,则需要您实现 getAuthorities() 、 isEnabled() 等方法。这些应该是与用户相关的详细信息,我在我的 User bean 上有。
    猜你喜欢
    • 2019-08-06
    • 2020-03-11
    • 2019-08-22
    • 1970-01-01
    • 2014-11-21
    • 2012-01-29
    • 2015-05-14
    • 2016-02-13
    • 1970-01-01
    相关资源
    最近更新 更多