1.5. ユーザーエンティティーの定義
次のアノテーションを user
エンティティーに追加して、セキュリティー情報をモデルに保存する方法を指定します。
src/main/java/org/acme/security/jpa/User.java
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 public class User extends PanacheEntity { @Username public String username; @Password public String password; @Roles 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) { User user = new User(); user.username = username; user.password = BcryptUtil.bcryptHash(password); user.role = role; user.persist(); } }
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
public class User extends PanacheEntity {
@Username
public String username;
@Password
public String password;
@Roles
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) {
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 エンティティーまたは Hibernate ORM with Panache エンティティー) に存在する必要があります。- 2
- ユーザー名に使用されるフィールドを示します。
- 3
- パスワードに使用されるフィールドを示します。デフォルトでは、bcrypt でハッシュされたパスワードを使用します。プレーンテキストまたはカスタムパスワードを使用するように設定できます。
- 4
- ターゲットプリンシパル表現属性に追加されたロールのコンマ区切りリストを示します。
- 5
- 適切な bcrypt ハッシュを使用してパスワードをハッシュ化して、ユーザーを追加できます。
注記
必ず Panache と PostgreSQL JDBC ドライバーをセットアップしてください。詳細は Setting up and configuring Hibernate ORM with Panache を参照してください。