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 扩展才会初始化。

1
@UserDefinition 注释必须存在于单个实体上,可以是常规的 Hibernate ORM 实体,也可以是带有 Panache 实体的 Hibernate ORM。
2
表示用于用户名的字段。
3
指明用于密码的字段。默认情况下,它使用 bcrypt-hashed 密码。您可以将其配置为使用纯文本或自定义密码。
4
表示添加到目标主体表示属性中的以逗号分隔的角色列表。
5
允许我们在使用适当的 bcrypt 哈希对密码进行哈希时添加用户。
注意

不要忘记设置 Panache 和 PostgreSQL JDBC 驱动程序,请参阅使用 Panache 设置和配置 Hibernate ORM

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.