這聽起來像是一個愚蠢的問題,但我不明白“UserDetails”類中的“isEnabled”是干什么用的。檔案說“指示用戶是啟用還是禁用。禁用的用戶無法通過身份驗證。” 所以,我真正需要這個布林值的唯一事情是禁用某些用戶的身份驗證?因為我有一個資料庫,并且在教程中,這個人制作了一個額外的列來保存該布林值。但是為什么我需要將該值保存在資料庫中?為什么我決定禁用其中一位用戶的身份驗證?那么洗掉用戶的帳戶不是更聰明嗎?如果有人可以向我解釋這個布林值的實際用途,那就太好了。這是“MyUserDetails”類,我在其中覆寫了“UserDetails”的方法:
package de.gabriel.vertretungsplan.models;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
public class MyUserDetails implements UserDetails {
private String userName;
private String password;
private boolean active;
private List<GrantedAuthority> authorities;
public MyUserDetails(User user) {
this.userName = user.getUserName();
this.password = user.getPassword();
this.active = user.isActive();
this.authorities = Arrays.stream(user.getRoles().split(","))
.map(SimpleGrantedAuthority::new)
.collect(Collectors.toList());
System.out.println(userName);
System.out.println(password);
System.out.println(active);
System.out.println(authorities);
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return authorities;
}
@Override
public String getPassword() {
return password;
}
@Override
public String getUsername() {
return userName;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return active;
}
}
uj5u.com熱心網友回復:
如果您的資料庫模型使用對其他表中用戶的參考,這將很有用。您不能洗掉這些用戶,否則您的資料庫內容將不一致。使用適當的外鍵約束,甚至不可能不洗掉這些參考(通過將它們設定為NULL,或洗掉包含它們的記錄)。
如果您不需要禁用用戶帳戶,則始終可以true從該方法回傳。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/461375.html
下一篇:從@Async函式呼叫中取回資料
