クラス User
java.lang.ObjectSE
org.springframework.security.core.userdetails.User
- 実装済みのインターフェース一覧:
SerializableSE、CredentialsContainer、UserDetails
UserDetailsService によって取得されたコアユーザー情報をモデル化します。 開発者は、このクラスを直接使用するか、サブクラス化するか、独自の UserDetails 実装をゼロから作成できます。
equals および hashcode の実装は、username プロパティのみに基づいています。これは、同じユーザープリンシパルオブジェクト(たとえば、ユーザーレジストリ内)のルックアップが、すべてのプロパティ(権限、たとえばパスワード)は同じです。
この実装は不変ではないことに注意してください。認証後にパスワードを消去できるようにするため、CredentialsContainer インターフェースを実装しています。インスタンスをメモリに保存して再利用する場合、これにより副作用が発生する可能性があります。その場合、UserDetailsService が呼び出されるたびに UserDetailsService からコピーを返すようにしてください。
- 関連事項:
ネストされたクラスの概要
ネストされたクラスコンストラクターの概要
コンストラクターコンストラクター説明User(StringSE username, @Nullable StringSE password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, CollectionSE<? extends GrantedAuthority> authorities) DaoAuthenticationProviderで必要な詳細を使用してUserを構築します。User(StringSE username, @Nullable StringSE password, CollectionSE<? extends GrantedAuthority> authorities) すべてのブール引数をtrueに設定して、より複雑なコンストラクターを呼び出します。方法の概要
修飾子と型メソッド説明static User.UserBuilderbuilder()UserBuilder を作成しますboolean指定されたオブジェクトが同じusername値を持つUserインスタンスである場合、trueを返します。voidユーザーに付与された権限を返します。@Nullable StringSEユーザーの認証に使用されるパスワードを返します。ユーザーの認証に使用されるユーザー名を返します。inthashCode()usernameのハッシュコードを返します。booleanユーザーのアカウントの有効期限が切れているかどうかを示します。booleanユーザーがロックされているかロック解除されているかを示します。booleanユーザーの資格情報(パスワード)の有効期限が切れているかどうかを示します。booleanユーザーが有効か無効かを示します。toString()static User.UserBuilder使用すべきではありません。この方法を使用することは、本番環境では安全とは見なされませんが、デモや開始には問題ありません。static User.UserBuilderwithUserDetails(UserDetails userDetails) static User.UserBuilderwithUsername(StringSE username) 指定されたユーザー名で UserBuilder を作成します
コンストラクターの詳細
User
public User(StringSE username, @Nullable StringSE password, CollectionSE<? extends GrantedAuthority> authorities) すべてのブール引数をtrueに設定して、より複雑なコンストラクターを呼び出します。User
public User(StringSE username, @Nullable 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ユーザーの認証に使用されたパスワードを返します。ユーザーがパスワードを指定していない場合(例: 代わりに Passkeys を指定している場合)は null になります。- 次で指定:
- インターフェース
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()を使用して自動的にエンコードします。例:
パスワード "password" はソースコードにコンパイルされ、作成時にメモリに含まれるため、これは本番環境では安全ではありません(これは初心者向けです)。これは、プレーンテキストのパスワードを回復して安全でない方法がまだあることを意味します。UserDetails のパスワードは安全にハッシュされるため、プレーンテキストのパスワードを使用する場合に若干の改善が見られます。つまり、UserDetails パスワードが誤って公開された場合でも、パスワードは安全に保管されます。本番環境では、事前にパスワードをハッシュ化することをお勧めします。例: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