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