1.5. ユーザーエンティティーの定義
-
以下のコードスニペットで説明されているように、
user
エンティティーにアノテーションを追加することで、セキュリティー情報をモデルに保存する方法を説明できるようになりました。
package org.acme.security.jpa; import jakarta.persistence.Entity; import jakarta.persistence.Table; import io.quarkus.hibernate.orm.panache.PanacheEntity; import io.quarkus.elytron.security.common.BcryptUtil; import io.quarkus.security.jpa.Password; import io.quarkus.security.jpa.Roles; import io.quarkus.security.jpa.UserDefinition; import io.quarkus.security.jpa.Username; @Entity @Table(name = "test_user") @UserDefinition 1 public class User extends PanacheEntity { @Username 2 public String username; @Password 3 public String password; @Roles 4 public String role; /** * Adds a new user to the database * @param username the username * @param password the unencrypted password (it is encrypted with bcrypt) * @param role the comma-separated roles */ public static void add(String username, String password, String role) { 5 User user = new User(); user.username = username; user.password = BcryptUtil.bcryptHash(password); user.role = role; user.persist(); } }
quarkus-security-jpa
エクステンションは、単一のエンティティーに @UserDefinition
アノテーションが付けられている場合にのみ初期化されます。
- 1
@UserDefinition
アノテーションは、通常の Hibernate ORM エンティティーまたは Panache エンティティーを含む Hibernate ORM のいずれかの単一のエンティティーに存在する必要があります。- 2
- ユーザー名に使用されるフィールドを示します。
- 3
- パスワードに使用されるフィールドを示します。デフォルトでは、bcrypt でハッシュされたパスワードを使用します。プレーンテキストまたはカスタムパスワードを使用するように設定できます。
- 4
- ターゲットプリンシパル表現属性に追加されたロールのコンマ区切りリストを示します。
- 5
- 適切な bcrypt ハッシュを使用してパスワードをハッシュ化して、ユーザーを追加できます。
注記
Panache と PostgreSQL JDBC ドライバーの設定を忘れないでください。詳細は Panache を使用した Hibernate ORM の設定 を参照してください。