【问题标题】:spring security custom authentication requirementsspring security 自定义认证要求
【发布时间】:2013-07-03 18:53:47
【问题描述】:

我正在使用 Spring Security 3.1.3。在我正在构建的应用程序上,当用户尝试登录时,除了检查他们的用户名和密码外,我还需要进行额外检查以验证他们的帐户(特别是,他们的帐户没有设置表明他们是禁止登录)。我对解决此问题的最佳方法感到困惑。

我应该创建一个身份验证过滤器 bean 并将其包含在我的 spring xml 的 form-login 元素中吗?或者我应该使用仅在用户成功满足用户名/密码要求时运行的身份验证成功过滤器做某事?还是别的什么?

【问题讨论】:

    标签: java spring authentication spring-security


    【解决方案1】:

    定义实现UserDetailsService 的自定义用户详细信息服务。使用用户凭据填充类 User 的实例,您可以将字段 enabledaccountNonLocked 用于禁止用户。

    @Service("userDetailsService")
    public class MyUserDetailsService implements UserDetailsService {
    
        @Transactional(readOnly = true)
        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {   
    
           // load user data from repository
           String password = ...
           boolean enabled = ...
           // ...
           UserDetails user = new User(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
           return user;     
        }   
    }
    

    然后将您的服务连接到spring-security.xml 中的身份验证管理器:

    <security:authentication-manager>   
        <security:authentication-provider user-service-ref="userDetailsService">
        ...
    <security:authentication-manager>  
    

    【讨论】:

      猜你喜欢
      • 2011-09-18
      • 1970-01-01
      • 2011-05-07
      • 2016-05-16
      • 2014-04-20
      • 2014-12-13
      • 2018-10-28
      • 2016-08-05
      • 2020-12-05
      相关资源
      最近更新 更多