【Java作业自动审批平台】| 后台管理认证授权表实现整体设计

目录

  • 一. 🦁 为什么需要权限管理
  • 二. 🦁 设计思想
    • Ⅰ. 需求分析
    • Ⅱ. 数据库设计
    • Ⅲ. Springsecurity配置
    • Ⅳ. 实现用户注册和登录
    • Ⅴ. 实现权限管理
  • 三. 🦁 写在最后
  • 四. 🦁 文末福利


大家好,我是狮子!这里是《Java题目自动审批系统》专栏。
我们上一章《分布式Java题目自动审批系统后端开发实战——开篇点题》搭建了项目后台大体框架,编写,现在轮廓已经清晰,现在可以来实现编码后台权限认证管理工作了。
在编码之前,我们还是先搞清楚为什么需要权限管理以及能实现权限认证的框架有哪些?

一. 🦁 为什么需要权限管理

权限管理

日常工作中权限的问题时时刻刻伴随着我们,程序员新入职一家公司需要找人开通各种权限,比如网络连接的权限、编码下载提交的权限、监控平台登录的权限、运营平台查数据的权限等等。

在很多时候我们会觉得这么多繁杂的申请给工作带来不便,并且如果突然想要查一些数据,发现没有申请过权限,需要再走审批流程,时间拉得会很长(这一点国企表现得尤为明显)。那为什么还需要这么严格的权限管理呢?

假设有一家医院,医院拥有患者的病历信息、医生的工作信息、药品的库存信息等等。如果这些信息都被不加限制地共享给医院内的每一个员工,那么可能会出现以下问题:一些非医疗人员有了查看病历的权限,导致患者的隐私泄露;医生们可以随意更改药品的库存信息,可能会导致药品过期或短缺;一些医护人员能够查看到其他同事的工作信息,会破坏团队之间的信任关系等等。因此,对于这些敏感信息,需要进行权限控制,只授权特定的人员进行访问和操作。

总的来说,权限管理是企业保障数据安全的重要措施。根据不同的岗位和职责,分配不同的权限,让员工只能访问与工作相关的数据,同时避免了敏感信息的泄露和误操作。这有助于提高数据的安全性和可靠性,并保障企业合法权益。

权限管理的目标是确保每个岗位的工作人员在系统上只能访问和执行与其职责相关的任务,并限制他们对其他任务和数据的访问权

权限管理框架常见的有SpringsecurityShiro,我们选择与SpringBoot契合度更高的Springsecurity框架!

二. 🦁 设计思想

使用Springsecurity搭建授权认证表是一种常见的做法,可以实现对系统中的用户进行身份验证和权限管理。

Ⅰ. 需求分析

在搭建授权认证表之前,我们需要明确需求和目标。我们的Java作业自动审批平台编写授权认证表的目的是为了实现用户身份验证和相关权限管理的功能。具体来说,我们需要实现以下需求:

  • 用户注册:允许用户通过用户名和密码进行注册,并将其保存到数据库中。
  • 用户登录:允许已注册的用户通过用户名和密码进行登录验证,并生成相应的身份认证凭证。
  • 权限管理:对不同的用户分配不同的权限,以控制其在系统中的操作范围。

Ⅱ. 数据库设计

在开始搭建授权认证表之前,我们需要设计数据库表结构来存储用户信息和权限信息(遵循RBAC模型)。
关系图如下:

依据上图,我们设计以下表

  • 用户表(Admin):存储用户的基本信息,如用户名、密码等。
CREATE TABLE admin (
	aid INT ( 10 ) PRIMARY KEY AUTO_INCREMENT COMMENT '管理员主键',
	username VARCHAR ( 50 ) UNIQUE NOT NULL COMMENT '姓名',
	PASSWORD VARCHAR ( 255 ) NOT NULL COMMENT '密码',
	memory BIGINT DEFAULT 0 COMMENT '初始内存大小' 
) ENGINE = INNODB;
  • 角色表(Role):存储系统中的角色信息,如管理员、普通用户等。
CREATE TABLE role ( rid INT ( 10 ) PRIMARY KEY AUTO_INCREMENT COMMENT '角色表主键', role_name VARCHAR ( 50 ) COMMENT '角色名' ) ENGINE = INNODB;
  • 权限表(Permission):存储系统中的权限信息,如访问某个功能的权限。
CREATE TABLE permission (
	pid INT ( 10 ) PRIMARY KEY AUTO_INCREMENT COMMENT '权限id',
permission_name VARCHAR ( 50 ) COMMENT '权限名',
url VARCHAR ( 100 )) ENGINE = INNODB;
  • 用户角色关联表(Admin_Role):建立用户和角色之间的关联关系。
CREATE TABLE admin_role ( aid INT ( 10 ), rid INT ( 10 ), PRIMARY KEY ( aid, rid ) );
  • 角色权限关联表(Role_Permission):建立角色和权限之间的关联关系。
CREATE TABLE role_permission ( rid INT ( 10 ), pid INT ( 10 ), PRIMARY KEY ( rid, pid ) ) ENGINE = INNODB;

Ⅲ. Springsecurity配置

在项目中引入Springsecurity,这里不需要指定版本,因为SpringBoot的依赖管理采用了约定大于配置的思想,将Springsecurity注册到了SpringBoot维护的版本仓库中,所以这里的Springsecurity版本和SpringBoot版本是一致的。

        <!-- spring-security -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

并进行相应的配置。主要配置包括:

  • 配置用户认证:指定用户认证的方式,例如基于数据库的认证。
  • 配置权限管理:定义系统中的角色和权限,并分配给用户。
  • 配置登录认证:指定登录页面、登录成功后的跳转页面等相关配置。
  • 配置访问控制:定义系统中不同URL路径的访问权限(网盘系统使用Handler)。

Ⅳ. 实现用户注册和登录

在系统中实现用户注册和登录的功能,包括以下步骤:
这里需要注意几点:用户注册和登录的前端页面名字和跳转路径需要提前指定好,所以这里需要和前端工程师约定好!!!

  • 创建用户注册页面,接收用户输入的用户名和密码,并将其保存到数据库的用户表中。
  • 创建用户登录页面,接收用户输入的用户名和密码,并通过Springsecurity进行认证。
  • 配置Springsecurity的认证方式,验证用户输入的用户名和密码是否与数据库中的用户信息匹配。
  • 配置Springsecurity的登录认证成功后的处理,例如生成身份认证凭证、跳转到指定页面等。

Ⅴ. 实现权限管理

在系统中实现权限管理的功能,包括以下步骤:

  • 创建角色和权限的管理页面,用于添加、编辑和删除角色和权限信息。

  • 在数据库中维护角色表和权限表,并建立角色和权限之间的关联关系。

  • 配置Springsecurity的权限管理,将系统中定义的角色和权限映射到Springsecurity的配置中。

  • 根据用户的角色信息,控制用户在系统中的操作权限。

三. 🦁 写在最后

如果说我比别人看得要远一点,那是因为我站在巨人的肩上。

——牛顿

这是文章的最后了,你有收获嘛?

四. 🦁 文末福利

为了让大家更好地学习SpringSecurity框架,狮子特地向清华社申请了《Spring Security实战》一书,

是一本关于 Spring Security 的应用指南,主要讲解了 Spring Security 的基础知识点、核心概念,以及围绕身份验证和授权过程的关键处理流程。
书籍目录如下:

某东原价 122元,现在免费赠书三本,详情如下:

🦁 送书抽奖活动 🦁

本次活动赠书3本,评论区抽取3位小伙伴送书

活动时间: 截止到2023-10-24 20: 00
参与方式: 点赞、收藏本文章,并任意评论”
抽奖时间: 2023.10.24
公布时间: 2023.10.24
通知方式:交流群内公布或私信通知


🦁 其它优质专栏推荐 🦁

🌟《Java核心系列(修炼内功,无上心法)》: 主要是JDK源码的核心讲解,几乎每篇文章都过万字,让你详细掌握每一个知识点!

🌟 《springBoot 源码剥析核心系列》:一些场景的Springboot源码剥析以及常用Springboot相关知识点解读

欢迎加入狮子的社区:『Lion-编程进阶之路』,日常收录优质好文

更多文章可持续关注上方🦁的博客,2023咱们顶峰相见!

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年11月9日
下一篇 2023年11月9日

相关推荐