gpt4 book ai didi

java - 在 Spring Security 4.0.1 中使用自定义身份验证过滤器导致用户注册失败

转载 作者:行者123 更新时间:2023-12-02 04:39:37 25 4
gpt4 key购买 nike

我正在尝试在数据库中创建用户实体后对用户进行身份验证,以便在安全上下文中设置经过身份验证的用户。但它无法抛出 Bad Credentials 错误。

这是代码

 UserDetails userDetails = userAuthService.loadUserByUsername(form.getUsername());
UsernamePasswordAuthenticationToken loggedIn = new UsernamePasswordAuthenticationToken(userDetails, userDetails.getPassword(), userDetails.getAuthorities());
//loggedIn.setDetails(userDetails);
authMgr.authenticate(loggedIn);

我正在正确获取用户详细信息。在第一个声明中。

我正在使用如下所示的自定义身份验证

<authentication-manager alias="authMgr">
<authentication-provider user-service-ref="userAuthService">
<password-encoder hash="bcrypt"></password-encoder>
</authentication-provider>
</authentication-manager>
<beans:bean id="userAuthService" class="com.csn.service.UserAuthService" >
</beans:bean>

UserAuthService 类是这样的。

public class UserAuthService implements UserDetailsService,Serializable{
@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException, DataAccessException {
try{
com.xxx.yyy.Authentication auth = new UserAuthDao().getUserByUsername(username);
if(auth!=null){
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
authorities.add(new com.xxx.ppp.GrantedAuthorityImpl(Constants.userRole));

return new User(auth.getUsername(), auth.getPassword(), true, true, true, true, authorities);
}
else{
return new User(username, "", true, true, true, true, null);
}
}
catch(Exception e){
log.error(className, "loadUserByUsername", e);
}
return null;
}
}

最佳答案

这应该有帮助:

SecurityContextHolder.getContext().setAuthentication(loggedIn);

关于java - 在 Spring Security 4.0.1 中使用自定义身份验证过滤器导致用户注册失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30318627/

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