gpt4 book ai didi

java - spring security自定义认证需求

转载 作者:行者123 更新时间:2023-11-30 07:15:55 25 4
gpt4 key购买 nike

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

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

最佳答案

定义一个自定义用户详细信息服务实现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>

关于java - spring security自定义认证需求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17455977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com