地方网站 源码,网络技术培训总结,温岭网站建设,手机app制作pdf基于角色的访问控制 (RBAC) 是一种有价值的访问控制模型,可增强安全性、简化访问管理并提高效率。它在管理资源访问对安全和运营至关重要的复杂环境中尤其有益。
我们将做什么
我们有一个包含公共路由和受限路由的 Web API。受限路由需要数据库中用户的有效 JWT。
现在用户…基于角色的访问控制 (RBAC) 是一种有价值的访问控制模型,可增强安全性、简化访问管理并提高效率。它在管理资源访问对安全和运营至关重要的复杂环境中尤其有益。
我们将做什么
我们有一个包含公共路由和受限路由的 Web API。受限路由需要数据库中用户的有效 JWT。
现在用户已经通过身份验证,我们希望更进一步,只有当用户具有特定角色时才允许访问某些数据。
我们的系统中有以下角色:
用户:可以访问他的信息管理员:可以执行用户角色所做的所有操作并访问用户列表。超级管理员:可以执行管理员角色所做的所有操作,并可以创建管理员用户;简而言之,他可以做所有事情。以下是受保护路由列表以及访问它们所需的角色
Route:[GET] /users/me角色:用户、管理员、超级管理员描述:检索经过身份验证的用户。
Route:[GET] /users角色:管理员、超级管理员描述:检索所有用户的列表。
Route:[POST] /admins角色:超级管理员描述:创建管理员。
前提条件:
要遵循本教程,请确保您的计算机上安装了以下工具。
JDK 11 或更高版本Maven 3.8 或更高版本Docker我们需要 Docker 来运行 MySQL 8 的容器;如果你的计算机上安装了 MySQL,则可以跳过它。运行以下命令从MySQL 映像启动 Docker 容器:
docker run -d -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=taskdb --name mysqldb -p 3307:3306 mysql:8.0
让我们使用以下 cURL 请求来注册一个用户。 我们得到以下输出。 我们可以看到一切都按预期进行;让我们继续!
创建角色实体
角色实体将代表我们系统中所需的不同角色。我们将创建一个枚举来表示所有可能的角色名称。
在“entities”包中,创建文件“RoleEnum.java”并添加以下代码:
package com.tericcabrel.authapi.entities;public enum RoleEnum {USER,ADMIN,SUPER_ADMIN
}
在“entities”包中,创建一个文件“Role.java”并添加以下代码:
package com.tericcabrel.authapi.entities;import jakarta.persistence.*;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;import java.util.Date;@Table(name = "roles")
@Entity
public class Role {@Id#