大家好,我是獅子!這里是《Java題目自動(dòng)審批系統(tǒng)
》專欄。
我們上一章《分布式Java題目自動(dòng)審批系統(tǒng)后端開發(fā)實(shí)戰(zhàn)——開篇點(diǎn)題
》搭建了項(xiàng)目后臺(tái)大體框架,編寫,現(xiàn)在輪廓已經(jīng)清晰,現(xiàn)在可以來實(shí)現(xiàn)編碼后臺(tái)權(quán)限認(rèn)證管理工作了。
在編碼之前,我們還是先搞清楚為什么需要權(quán)限管理以及能實(shí)現(xiàn)權(quán)限認(rèn)證的框架有哪些?
一. ?? 為什么需要權(quán)限管理

日常工作中權(quán)限的問題時(shí)時(shí)刻刻伴隨著我們,程序員新入職一家公司需要找人開通各種權(quán)限,比如網(wǎng)絡(luò)連接的權(quán)限、編碼下載提交的權(quán)限、監(jiān)控平臺(tái)登錄的權(quán)限、運(yùn)營(yíng)平臺(tái)查數(shù)據(jù)的權(quán)限等等。
在很多時(shí)候我們會(huì)覺得這么多繁雜的申請(qǐng)給工作帶來不便,并且如果突然想要查一些數(shù)據(jù),發(fā)現(xiàn)沒有申請(qǐng)過權(quán)限,需要再走審批流程,時(shí)間拉得會(huì)很長(zhǎng)(這一點(diǎn)國(guó)企表現(xiàn)得尤為明顯)。那為什么還需要這么嚴(yán)格的權(quán)限管理呢?
假設(shè)有一家醫(yī)院,醫(yī)院擁有患者的病歷信息、醫(yī)生的工作信息、藥品的庫存信息等等。如果這些信息都被不加限制地共享給醫(yī)院內(nèi)的每一個(gè)員工,那么可能會(huì)出現(xiàn)以下問題:一些非醫(yī)療人員有了查看病歷的權(quán)限,導(dǎo)致患者的隱私泄露;醫(yī)生們可以隨意更改藥品的庫存信息,可能會(huì)導(dǎo)致藥品過期或短缺;一些醫(yī)護(hù)人員能夠查看到其他同事的工作信息,會(huì)破壞團(tuán)隊(duì)之間的信任關(guān)系等等。因此,對(duì)于這些敏感信息,需要進(jìn)行權(quán)限控制,只授權(quán)特定的人員進(jìn)行訪問和操作。
總的來說,權(quán)限管理是企業(yè)保障數(shù)據(jù)安全的重要措施。根據(jù)不同的崗位和職責(zé),分配不同的權(quán)限,讓員工只能訪問與工作相關(guān)的數(shù)據(jù),同時(shí)避免了敏感信息的泄露和誤操作。這有助于提高數(shù)據(jù)的安全性和可靠性,并保障企業(yè)合法權(quán)益。
權(quán)限管理的目標(biāo)是確保每個(gè)崗位的工作人員在系統(tǒng)上只能訪問和執(zhí)行與其職責(zé)相關(guān)的任務(wù),并限制他們對(duì)其他任務(wù)和數(shù)據(jù)的訪問權(quán)。
權(quán)限管理框架常見的有Springsecurity和Shiro,我們選擇與SpringBoot契合度更高的Springsecurity框架!
二. ?? 設(shè)計(jì)思想
使用Springsecurity搭建授權(quán)認(rèn)證表是一種常見的做法,可以實(shí)現(xiàn)對(duì)系統(tǒng)中的用戶進(jìn)行身份驗(yàn)證和權(quán)限管理。
Ⅰ. 需求分析
在搭建授權(quán)認(rèn)證表之前,我們需要明確需求和目標(biāo)。我們的Java作業(yè)自動(dòng)審批平臺(tái)
編寫授權(quán)認(rèn)證表的目的是為了實(shí)現(xiàn)用戶身份驗(yàn)證和相關(guān)權(quán)限管理的功能。具體來說,我們需要實(shí)現(xiàn)以下需求:
- 用戶注冊(cè):允許用戶通過用戶名和密碼進(jìn)行注冊(cè),并將其保存到數(shù)據(jù)庫中。
- 用戶登錄:允許已注冊(cè)的用戶通過用戶名和密碼進(jìn)行登錄驗(yàn)證,并生成相應(yīng)的身份認(rèn)證憑證。
- 權(quán)限管理:對(duì)不同的用戶分配不同的權(quán)限,以控制其在系統(tǒng)中的操作范圍。
Ⅱ. 數(shù)據(jù)庫設(shè)計(jì)
在開始搭建授權(quán)認(rèn)證表之前,我們需要設(shè)計(jì)數(shù)據(jù)庫表結(jié)構(gòu)來存儲(chǔ)用戶信息和權(quán)限信息(遵循RBAC模型)。
關(guān)系圖如下:
依據(jù)上圖,我們?cè)O(shè)計(jì)以下表
- 用戶表(Admin):存儲(chǔ)用戶的基本信息,如用戶名、密碼等。
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 '初始內(nèi)存大小'
) ENGINE = INNODB;
- 角色表(Role):存儲(chǔ)系統(tǒng)中的角色信息,如管理員、普通用戶等。
CREATE TABLE role ( rid INT ( 10 ) PRIMARY KEY AUTO_INCREMENT COMMENT '角色表主鍵', role_name VARCHAR ( 50 ) COMMENT '角色名' ) ENGINE = INNODB;
- 權(quán)限表(Permission):存儲(chǔ)系統(tǒng)中的權(quán)限信息,如訪問某個(gè)功能的權(quán)限。
CREATE TABLE permission (
pid INT ( 10 ) PRIMARY KEY AUTO_INCREMENT COMMENT '權(quán)限id',
permission_name VARCHAR ( 50 ) COMMENT '權(quán)限名',
url VARCHAR ( 100 )) ENGINE = INNODB;
- 用戶角色關(guān)聯(lián)表(Admin_Role):建立用戶和角色之間的關(guān)聯(lián)關(guān)系。
CREATE TABLE admin_role ( aid INT ( 10 ), rid INT ( 10 ), PRIMARY KEY ( aid, rid ) );
- 角色權(quán)限關(guān)聯(lián)表(Role_Permission):建立角色和權(quán)限之間的關(guān)聯(lián)關(guān)系。
CREATE TABLE role_permission ( rid INT ( 10 ), pid INT ( 10 ), PRIMARY KEY ( rid, pid ) ) ENGINE = INNODB;
Ⅲ. Springsecurity配置
在項(xiàng)目中引入Springsecurity,這里不需要指定版本,因?yàn)镾pringBoot的依賴管理采用了約定大于配置
的思想,將Springsecurity注冊(cè)到了SpringBoot維護(hù)的版本倉庫中,所以這里的Springsecurity版本和SpringBoot版本是一致的。
<!-- spring-security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
并進(jìn)行相應(yīng)的配置。主要配置包括:
- 配置用戶認(rèn)證:指定用戶認(rèn)證的方式,例如基于數(shù)據(jù)庫的認(rèn)證。
- 配置權(quán)限管理:定義系統(tǒng)中的角色和權(quán)限,并分配給用戶。
- 配置登錄認(rèn)證:指定登錄頁面、登錄成功后的跳轉(zhuǎn)頁面等相關(guān)配置。
- 配置訪問控制:定義系統(tǒng)中不同URL路徑的訪問權(quán)限(網(wǎng)盤系統(tǒng)使用Handler)。
Ⅳ. 實(shí)現(xiàn)用戶注冊(cè)和登錄
在系統(tǒng)中實(shí)現(xiàn)用戶注冊(cè)和登錄的功能,包括以下步驟:這里需要注意幾點(diǎn):用戶注冊(cè)和登錄的前端頁面名字和跳轉(zhuǎn)路徑需要提前指定好,所以這里需要和前端工程師約定好?。?!
- 創(chuàng)建用戶注冊(cè)頁面,接收用戶輸入的用戶名和密碼,并將其保存到數(shù)據(jù)庫的用戶表中。
- 創(chuàng)建用戶登錄頁面,接收用戶輸入的用戶名和密碼,并通過Springsecurity進(jìn)行認(rèn)證。
- 配置Springsecurity的認(rèn)證方式,驗(yàn)證用戶輸入的用戶名和密碼是否與數(shù)據(jù)庫中的用戶信息匹配。
- 配置Springsecurity的登錄認(rèn)證成功后的處理,例如生成身份認(rèn)證憑證、跳轉(zhuǎn)到指定頁面等。
Ⅴ. 實(shí)現(xiàn)權(quán)限管理
在系統(tǒng)中實(shí)現(xiàn)權(quán)限管理的功能,包括以下步驟:
-
創(chuàng)建角色和權(quán)限的管理頁面,用于添加、編輯和刪除角色和權(quán)限信息。
-
在數(shù)據(jù)庫中維護(hù)角色表和權(quán)限表,并建立角色和權(quán)限之間的關(guān)聯(lián)關(guān)系。
-
配置Springsecurity的權(quán)限管理,將系統(tǒng)中定義的角色和權(quán)限映射到Springsecurity的配置中。
-
根據(jù)用戶的角色信息,控制用戶在系統(tǒng)中的操作權(quán)限。
三. ?? 寫在最后
如果說我比別人看得要遠(yuǎn)一點(diǎn),那是因?yàn)槲艺驹诰奕说募缟稀?br>
——牛頓
這是文章的最后了,你有收獲嘛?
四. ?? 文末福利
為了讓大家更好地學(xué)習(xí)SpringSecurity
框架,獅子特地向清華社申請(qǐng)了《Spring Security實(shí)戰(zhàn)》一書,
是一本關(guān)于 Spring Security 的應(yīng)用指南,主要講解了 Spring Security 的基礎(chǔ)知識(shí)點(diǎn)、核心概念,以及圍繞身份驗(yàn)證和授權(quán)過程的關(guān)鍵處理流程。
書籍目錄如下:某東原價(jià) 122元,現(xiàn)在免費(fèi)贈(zèng)書三本
,詳情如下:
?? 送書抽獎(jiǎng)活動(dòng) ??
本次活動(dòng)贈(zèng)書3本,評(píng)論區(qū)抽取3位小伙伴送書
活動(dòng)時(shí)間: 截止到2023-10-24 20: 00 參與方式: 點(diǎn)贊、收藏本文章,并任意評(píng)論” 抽獎(jiǎng)時(shí)間: 2023.10.24 公布時(shí)間: 2023.10.24 通知方式:交流群內(nèi)公布或私信通知
?? 其它優(yōu)質(zhì)專欄推薦 ??
??《Java核心系列(修煉內(nèi)功,無上心法)》: 主要是JDK源碼的核心講解,幾乎每篇文章都過萬字,讓你詳細(xì)掌握每一個(gè)知識(shí)點(diǎn)!
?? 《springBoot 源碼剝析核心系列》:一些場(chǎng)景的Springboot源碼剝析以及常用Springboot相關(guān)知識(shí)點(diǎn)解讀
歡迎加入獅子的社區(qū):『Lion-編程進(jìn)階之路』,日常收錄優(yōu)質(zhì)好文文章來源:http://www.zghlxwxcb.cn/news/detail-712768.html
更多文章可持續(xù)關(guān)注上方??的博客,2023咱們頂峰相見!文章來源地址http://www.zghlxwxcb.cn/news/detail-712768.html
到了這里,關(guān)于【Java作業(yè)自動(dòng)審批平臺(tái)】| 后臺(tái)管理認(rèn)證授權(quán)表實(shí)現(xiàn)整體設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!