Spring Securityが提供するUserとAuthoritiesから属性を取得しようとしています。Spring SecurityからUser Classを拡張し、JPAを使用してテーブルを作成する方法
独自のカスタムクラスを作成するためにUserDetailsServiceをオーバーライドすることができますが、この場合は完全なデフォルトクラスを取得したいだけでなく、さらにいくつかの属性を取得する必要があります。
は私のコードで説明しましょう:
public class User implements UserDetails, CredentialsContainer {
private static final long serialVersionUID = SpringSecurityCoreVersion.SERIAL_VERSION_UID;
private String password;
private final String username;
private final Set<GrantedAuthority> authorities;
private final boolean accountNonExpired;
private final boolean accountNonLocked;
private final boolean credentialsNonExpired;
private final boolean enabled;
}
これは春のセキュリティが提供するユーザークラスであり、私がしたいことには、これらの属性を使用して独自のクラスを拡張しています。 は、私はこれを試してみましたが、データベースは、ユーザーからの属性を取得できません:
@Entity
@Table(name="MyUser")
public class ExtendedUser extends User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
private String email;
private static final long serialVersionUID = -2147191899215904479L;
public ExtendedUser(String username, String password, boolean enabled, boolean accountNonExpired,
boolean credentialsNonExpired, boolean accountNonLocked,
Collection<? extends GrantedAuthority> authorities) {
super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
// TODO Auto-generated constructor stub
}
.
.
.
私の質問、私はこれらの属性を継承し、休止状態を作るためにJPAのアノテーションを使用するために自分のUserクラスを作成する必要がありますされます"それを理解します?
私はここで何か迷いがあると思うが、私はそれを理解できない。
エンティティとして注釈が付けられている「ユーザー」はありますか?そうでない場合は、JPAドキュメントに従って、_orm.xml_ファイルを使用してマッピングします。 –
いいえ、そうではありません。 私は現在使用しているJava ConfigとXML Configを混在させたくありません。なぜなら、ライブラリ内にあるので、その注釈をUserクラスに追加できないからです。 ナロスが説明した方法を使用すると思います。 ありがとうございました。 –
SpringセキュリティからUserクラスを拡張する必要はありません。よりクリーンでシンプルなソリューションは、ExtendedUserクラスにUserDetailsインターフェイスを実装させることです。 –