クラス User
java.lang.ObjectSE
org.springframework.security.core.userdetails.User
- 実装されたすべてのインターフェース:
SerializableSE
、CredentialsContainer
、UserDetails
UserDetailsService
によって取得されたコアユーザー情報をモデル化します。 開発者は、このクラスを直接使用するか、サブクラス化するか、独自の UserDetails
実装をゼロから作成できます。
equals
および hashcode
の実装は、username
プロパティのみに基づいています。これは、同じユーザープリンシパルオブジェクト(たとえば、ユーザーレジストリ内)のルックアップが、すべてのプロパティ(権限、たとえばパスワード)は同じです。
この実装は不変ではないことに注意してください。認証後にパスワードを消去できるようにするため、CredentialsContainer
インターフェースを実装しています。インスタンスをメモリに保存して再利用する場合、これにより副作用が発生する可能性があります。その場合、UserDetailsService
が呼び出されるたびに UserDetailsService
からコピーを返すようにしてください。
- 関連事項:
ネストされたクラスのサマリー
ネストされたクラスコンストラクターのサマリー
コンストラクターコンストラクター説明User
(StringSE username, StringSE password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, CollectionSE<? extends GrantedAuthority> authorities) DaoAuthenticationProvider
で必要な詳細を使用してUser
を構築します。User
(StringSE username, StringSE password, CollectionSE<? extends GrantedAuthority> authorities) すべてのブール引数をtrue
に設定して、より複雑なコンストラクターを呼び出します。メソッドのサマリー
修飾子と型メソッド説明static User.UserBuilder
builder()
UserBuilder を作成しますboolean
指定されたオブジェクトが同じusername
値を持つUser
インスタンスである場合、true
を返します。void
ユーザーに付与された権限を返します。ユーザーの認証に使用されるパスワードを返します。ユーザーの認証に使用されるユーザー名を返します。int
hashCode()
username
のハッシュコードを返します。boolean
ユーザーのアカウントの有効期限が切れているかどうかを示します。boolean
ユーザーがロックされているかロック解除されているかを示します。boolean
ユーザーの資格情報(パスワード)の有効期限が切れているかどうかを示します。boolean
ユーザーが有効か無効かを示します。toString()
static User.UserBuilder
使用すべきではありません。この方法を使用することは、本番環境では安全とは見なされませんが、デモや開始には問題ありません。static User.UserBuilder
withUserDetails
(UserDetails userDetails) static User.UserBuilder
withUsername
(StringSE username) 指定されたユーザー名で UserBuilder を作成します
コンストラクターの詳細
User
public User(StringSE username, StringSE password, CollectionSE<? extends GrantedAuthority> authorities) すべてのブール引数をtrue
に設定して、より複雑なコンストラクターを呼び出します。User
public User(StringSE username, StringSE password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, CollectionSE<? extends GrantedAuthority> authorities) DaoAuthenticationProvider
で必要な詳細を使用してUser
を構築します。- パラメーター:
username
-DaoAuthenticationProvider
に提示されたユーザー名password
-DaoAuthenticationProvider
に提示されるパスワードenabled
- ユーザーが有効になっている場合はtrue
に設定accountNonExpired
- アカウントの有効期限が切れていない場合はtrue
に設定credentialsNonExpired
- 資格情報の有効期限が切れていない場合は、true
に設定されますaccountNonLocked
- アカウントがロックされていない場合はtrue
に設定authorities
- 正しいユーザー名とパスワードを提示し、ユーザーが有効になっている場合に呼び出し元に付与する必要がある権限。null ではありません。- 例外:
IllegalArgumentExceptionSE
-null
値がパラメーターとして、またはGrantedAuthority
コレクションの要素として渡された場合
メソッドの詳細
getAuthorities
インターフェースからコピーされた説明:UserDetails
ユーザーに付与された権限を返します。null
を返すことができません。- 次で指定:
- インターフェース
UserDetails
のgetAuthorities
- 戻り値:
- 自然キーでソートされた権限 (非
null
)
getPassword
インターフェースからコピーされた説明:UserDetails
ユーザーの認証に使用されるパスワードを返します。- 次で指定:
- インターフェース
UserDetails
のgetPassword
- 戻り値:
- パスワード
getUsername
インターフェースからコピーされた説明:UserDetails
ユーザーの認証に使用されるユーザー名を返します。null
を返すことはできません。- 次で指定:
- インターフェース
UserDetails
のgetUsername
- 戻り値:
- ユーザー名 (非
null
)
isEnabled
public boolean isEnabled()インターフェースからコピーされた説明:UserDetails
ユーザーが有効か無効かを示します。無効なユーザーは認証できません。- 次で指定:
- インターフェース
UserDetails
のisEnabled
- 戻り値:
- ユーザーが有効な場合は
true
、それ以外の場合はfalse
isAccountNonExpired
public boolean isAccountNonExpired()インターフェースからコピーされた説明:UserDetails
ユーザーのアカウントの有効期限が切れているかどうかを示します。期限切れのアカウントは認証できません。- 次で指定:
- インターフェース
UserDetails
のisAccountNonExpired
- 戻り値:
- ユーザーのアカウントが有効な場合(つまり、有効期限が切れていない場合)
true
、有効でなくなった場合はfalse
(つまり、期限切れ)
isAccountNonLocked
public boolean isAccountNonLocked()インターフェースからコピーされた説明:UserDetails
ユーザーがロックされているかロック解除されているかを示します。ロックされたユーザーは認証できません。- 次で指定:
- インターフェース
UserDetails
のisAccountNonLocked
- 戻り値:
- ユーザーがロックされていない場合は
true
、それ以外の場合はfalse
isCredentialsNonExpired
public boolean isCredentialsNonExpired()インターフェースからコピーされた説明:UserDetails
ユーザーの資格情報(パスワード)の有効期限が切れているかどうかを示します。期限切れの資格情報は認証を妨げます。- 次で指定:
- インターフェース
UserDetails
のisCredentialsNonExpired
- 戻り値:
- ユーザーの資格情報が有効な場合(つまり、有効期限が切れていない場合)
true
、有効でなくなった場合はfalse
(つまり、期限切れ)
eraseCredentials
public void eraseCredentials()- 次で指定:
- インターフェース
CredentialsContainer
のeraseCredentials
equals
指定されたオブジェクトが同じusername
値を持つUser
インスタンスである場合、true
を返します。つまり、同じプリンシパルを表す同じユーザー名を持つオブジェクトは等しいです。
hashCode
public int hashCode()username
のハッシュコードを返します。toString
withUsername
指定されたユーザー名で UserBuilder を作成します- パラメーター:
username
- 使用するユーザー名- 戻り値:
- UserBuilder
builder
UserBuilder を作成します- 戻り値:
- UserBuilder
withDefaultPasswordEncoder
使用すべきではありません。この方法を使用することは、本番環境では安全とは見なされませんが、デモや使用開始には受け入れられます。本番環境では、パスワードが外部でエンコードされていることを確認してください。詳細については、メソッド Javadoc を参照してください。このサポートを削除する予定はありません。これは、本番目的では安全でないと見なされることを示すために非推奨です。警告 : この方法は本番にとって安全ではないと見なされており、サンプルアプリケーションのみを対象としています。
ユーザーを作成し、提供されたパスワードを
PasswordEncoderFactories.createDelegatingPasswordEncoder()
を使用して自動的にエンコードします。例:UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); // outputs {bcrypt}$2a$10$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG System.out.println(user.getPassword());
PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder(); // outputs {bcrypt}$2a$10$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG // remember the password that is printed out and use in the next step System.out.println(encoder.encode("password"));
UserDetails user = User.withUsername("user") .password("{bcrypt}$2a$10$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG") .roles("USER") .build();
- 戻り値:
- デフォルトの PasswordEncoder でパスワードを自動的にエンコードする UserBuilder
withUserDetails