【发布时间】:2024-05-21 22:35:01
【问题描述】:
我正在使用 UserDetailsService 对我的用户进行身份验证:
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userDetailsService">
<password-encoder hash="sha"/>
</authentication-provider>
</authentication-manager>
userDetailsService 类:
@Service("userDetailsService")
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
private UserService userService;
@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException, DataAccessException {
User user = null;
try {
user = userService.getUserByUsername(username);
} catch (Exception e) {
e.printStackTrace();
}
if (user.isForceChangePass()) {
MyForcePasswordChangeException bad = new MyForcePasswordChangeException(
"Password is not valid, and it must be changed!");
throw bad;
}
}
编辑:
在获取用户名后,我检查 ForceChangePass 指示器,如果它是真的,我通过我自己的异常将用户登陆到 loginFailureHandler(尽管密码正确与否)我想在 loginFailureHandler 中检查我的异常是否被抛出以防万一仅登录成功。
【问题讨论】: