当前位置: 首页 > article >正文

在 Spring Boot 3 中实现基于角色的访问控制

基于角色的访问控制 (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
    &#

http://www.kler.cn/a/444426.html

相关文章:

  • 2.4 libpcap和dpdk的区别
  • @PostConstruct注解解释!!!!
  • C++ 面向对象编程:友元、
  • python脚本中使用git命令
  • 【ELK】Filebeat采集Docker容器日志
  • ‌HBase是什么,‌HBase介绍
  • 每天40分玩转Django:实操博客应用
  • 基于Matlab实现三维地球模型(源码)
  • 【Python】使用Selenium 操作浏览器 自动化测试 记录
  • ECharts柱状图-柱图32,附视频讲解与代码下载
  • 电商数据API接口的未来趋势:智能化与自动化
  • Redis篇-16--持久化篇(RDB,AOF,混合持久化,最佳策略)
  • 【java】规则引擎
  • 硬盘清洁器 -一个功能出色的的文件与使用纪录清理工具,不仅可以将磁盘中不必要的暂存盘一次扫除,供大家学习研究参考
  • 数据库中常见的聚合函数
  • 网络多层的协议详述
  • 【自动控制原理】学习地图
  • Golang学习笔记_11——指针
  • 大模型呼入机器人有哪些功能特点?(转)
  • arcgisPro相接多个面要素转出为完整独立线要素
  • 编写composer包和发布全攻略
  • Springboot家政服务管理系统
  • ICCAD 2024新趋势:IP企业携手为汽车和桌面等热点应用打造联合IP解决方案
  • 校园交友app/校园资源共享小程序/校园圈子集合二手物品交易论坛、交友等综合型生活服务社交论坛
  • 基于Spring Boot的医院质控上报系统
  • 鸿蒙Next页面和自定义组件生命周期