ฉันกำลังตรวจสอบผู้ใช้ของฉันด้วย 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 และหากเป็นจริง ฉันผ่านข้อยกเว้นของตัวเอง ซึ่งส่งผลให้ผู้ใช้เข้าสู่ระบบ FailureHandler (แม้ว่ารหัสผ่านจะถูกต้องหรือไม่ก็ตาม) ฉันต้องการใน LoginFailureHandler เพื่อตรวจสอบว่าข้อยกเว้นของฉันถูกส่งออกไปหรือไม่ ในกรณีที่เข้าสู่ระบบสำเร็จเท่านั้น .