クラス User
- java.lang.Object
-
- org.springframework.security.core.userdetails.User
- 実装されたすべてのインターフェース:
java.io.Serializable
、CredentialsContainer
、UserDetails
public class User extends java.lang.Object implements UserDetails, CredentialsContainer
UserDetailsService
によって取得されたコアユーザー情報をモデル化します。開発者は、このクラスを直接使用するか、サブクラス化するか、独自の
UserDetails
実装をゼロから作成できます。equals
およびhashcode
の実装は、username
プロパティのみに基づいています。これは、同じユーザープリンシパルオブジェクト(たとえば、ユーザーレジストリ内)のルックアップが、すべてのプロパティ(権限、たとえばパスワード)は同じです。この実装は不変ではないことに注意してください。認証後にパスワードを消去できるようにするため、
CredentialsContainer
インターフェースを実装しています。インスタンスをメモリに保存して再利用する場合、これにより副作用が発生する可能性があります。その場合、UserDetailsService
が呼び出されるたびにUserDetailsService
からコピーを返すようにしてください。- 関連事項:
- 直列化された形式
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 クラス 説明 static class
User.UserBuilder
追加するユーザーをビルドします。
コンストラクターのサマリー
コンストラクター コンストラクター 説明 User(java.lang.String username, java.lang.String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, java.util.Collection<? extends GrantedAuthority> authorities)
DaoAuthenticationProvider
で必要な詳細を使用してUser
を構築します。User(java.lang.String username, java.lang.String password, java.util.Collection<? extends GrantedAuthority> authorities)
すべてのブール引数をtrue
に設定して、より複雑なコンストラクターを呼び出します。
メソッドのサマリー
すべてのメソッド 静的メソッド インスタンスメソッド 具象メソッド 非推奨のメソッド 修飾子と型 メソッド 説明 static User.UserBuilder
builder()
UserBuilder を作成しますboolean
equals(java.lang.Object obj)
指定されたオブジェクトが同じusername
値を持つUser
インスタンスである場合、true
を返します。void
eraseCredentials()
java.util.Collection<GrantedAuthority>
getAuthorities()
ユーザーに付与された権限を返します。java.lang.String
getPassword()
ユーザーの認証に使用されるパスワードを返します。java.lang.String
getUsername()
ユーザーの認証に使用されるユーザー名を返します。int
hashCode()
username
のハッシュコードを返します。boolean
isAccountNonExpired()
ユーザーのアカウントの有効期限が切れているかどうかを示します。boolean
isAccountNonLocked()
ユーザーがロックされているかロック解除されているかを示します。boolean
isCredentialsNonExpired()
ユーザーの資格情報(パスワード)の有効期限が切れているかどうかを示します。boolean
isEnabled()
ユーザーが有効か無効かを示します。java.lang.String
toString()
static User.UserBuilder
withDefaultPasswordEncoder()
使用すべきではありません。この方法を使用することは、本番環境では安全とは見なされませんが、デモや開始には問題ありません。static User.UserBuilder
withUserDetails(UserDetails userDetails)
static User.UserBuilder
withUsername(java.lang.String username)
指定されたユーザー名で UserBuilder を作成します
コンストラクターの詳細
User
public User(java.lang.String username, java.lang.String password, java.util.Collection<? extends GrantedAuthority> authorities)
すべてのブール引数をtrue
に設定して、より複雑なコンストラクターを呼び出します。
User
public User(java.lang.String username, java.lang.String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, java.util.Collection<? extends GrantedAuthority> authorities)
DaoAuthenticationProvider
で必要な詳細を使用してUser
を構築します。- パラメーター:
username
-DaoAuthenticationProvider
に提示されたユーザー名password
-DaoAuthenticationProvider
に提示されるパスワードenabled
- ユーザーが有効になっている場合はtrue
に設定accountNonExpired
- アカウントの有効期限が切れていない場合はtrue
に設定credentialsNonExpired
- 資格情報の有効期限が切れていない場合は、true
に設定されますaccountNonLocked
- アカウントがロックされていない場合はtrue
に設定authorities
- 正しいユーザー名とパスワードを提示し、ユーザーが有効になっている場合に呼び出し元に付与する必要がある権限。null ではありません。- 例外:
java.lang.IllegalArgumentException
-null
値がパラメーターとして、またはGrantedAuthority
コレクションの要素として渡された場合
メソッドの詳細
getAuthorities
public java.util.Collection<GrantedAuthority> getAuthorities()
インターフェースからコピーされた説明:UserDetails
ユーザーに付与された権限を返します。null
を返すことができません。- 次で指定:
- インターフェース
UserDetails
のgetAuthorities
- 戻り値:
- 自然キーでソートされた権限 (非
null
)
getPassword
public java.lang.String getPassword()
インターフェースからコピーされた説明:UserDetails
ユーザーの認証に使用されるパスワードを返します。- 次で指定:
- インターフェース
UserDetails
のgetPassword
- 戻り値:
- パスワード
getUsername
public java.lang.String 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
public boolean equals(java.lang.Object obj)
指定されたオブジェクトが同じusername
値を持つUser
インスタンスである場合、true
を返します。つまり、同じプリンシパルを表す同じユーザー名を持つオブジェクトは等しいです。
- オーバーライド:
- クラス
java.lang.Object
のequals
hashCode
public int hashCode()
username
のハッシュコードを返します。- オーバーライド:
- クラス
java.lang.Object
のhashCode
toString
public java.lang.String toString()
- オーバーライド:
- クラス
java.lang.Object
のtoString
withUsername
public static User.UserBuilder withUsername(java.lang.String username)
指定されたユーザー名で UserBuilder を作成します- パラメーター:
username
- 使用するユーザー名- 戻り値:
- UserBuilder
builder
public static User.UserBuilder builder()
UserBuilder を作成します- 戻り値:
- UserBuilder
withDefaultPasswordEncoder
@Deprecated public static User.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
public static User.UserBuilder withUserDetails(UserDetails userDetails)