目录
大家好,我是狮子!这里是《Java题目自动审批系统
》专栏。
我们上一章《分布式Java题目自动审批系统后端开发实战——开篇点题
》搭建了项目后台大体框架,编写,现在轮廓已经清晰,现在可以来实现编码后台权限认证管理工作了。
在编码之前,我们还是先搞清楚为什么需要权限管理以及能实现权限认证的框架有哪些?
一. 🦁 为什么需要权限管理
日常工作中权限的问题时时刻刻伴随着我们,程序员新入职一家公司需要找人开通各种权限,比如网络连接的权限、编码下载提交的权限、监控平台登录的权限、运营平台查数据的权限等等。
总的来说,权限管理是企业保障数据安全的重要措施。根据不同的岗位和职责,分配不同的权限,让员工只能访问与工作相关的数据,同时避免了敏感信息的泄露和误操作。这有助于提高数据的安全性和可靠性,并保障企业合法权益。
权限管理框架常见的有Springsecurity和Shiro,我们选择与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元,现在免费赠书三本
,详情如下:
欢迎加入狮子的社区:『Lion-编程进阶之路』,日常收录优质好文
更多文章可持续关注上方🦁的博客,2023咱们顶峰相见!