1.5. 定义用户实体
通过在 用户 实体中添加以下注解来指定存储在模型中的安全信息:
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();
}
}
只有在单个实体被标上 @UserDefinition 标注时,quarkus-security-jpa 扩展才会初始化。
注意
不要忘记设置 Panache 和 PostgreSQL JDBC 驱动程序,请参阅使用 Panache 设置和配置 Hibernate ORM。