用戶token認證登陸以及集成redis實現角色權限控制 項目復盤


在我們的學習大全中,我們終於將一整個項目完整的實現了,寫完后我們還要做一件很重要的事情,就是復盤,跟着之前的筆記博客,從最開始的步驟開始,再次實現整個項目過程。

一、單純的實現用戶的增刪改查。

我們對數據庫表單進行重現,數據庫名字名為selectFuPan,數據庫中各個創建如下:

CREATE TABLE selectFuPan.sys_user(
    `id` bigint NOT NULL comment 'ID ',
    `username` varchar(50) comment '用戶名',
    `password` varchar(50) comment '密碼',
    PRIMARY KEY (`id`)
);


insert into selectFuPan.sys_user values('1' , 'admmin' , '1')
insert into selectFuPan.sys_user values('2' , 'superadmmin' , '11')
insert into selectFuPan.sys_user values('3' , 'user' , '111')

CREATE TABLE selectFuPan.`sys_role` (
    `id` bigint NOT NULL AUTO_INCREMENT comment '角色ID ',
    `role_name` varchar(50) comment '角色名',
    `role` varchar(50) comment '角色',
    PRIMARY KEY (`id`)
);
insert into selectFuPan.sys_role values ('1','普通用戶' , 'ROLE_USER');
insert into selectFuPan.sys_role values ('2','普通管理員' , 'ROLE_ADMIN');
insert into selectFuPan.sys_role values ('3','超級管理員','ROLE_SUPERADMIN');

CREATE TABLE selectFuPan.`sys_user_role` (
    `user_id` bigint default null comment '用戶id ',
    `role_id` bigint default null comment '角色id'
);
ALTER table testdemo.`sys_role` comment '用戶角色關聯表'

insert into selectFuPan.sys_user_role values('3' , '1')
insert into selectFuPan.sys_user_role values('1' , '2')
insert into selectFuPan.sys_user_role values('2' , '3')

CREATE TABLE selectFuPan.`sys_role_privilege` (
    `role_id` bigint default null comment '角色id ',
    `privilege_id` bigint default null comment '權限id'
);
ALTER table selectFuPan.sys_role_privilege comment '角色權限關聯表'

insert into selectFuPan.sys_role_privilege values('1' , '1')
insert into selectFuPan.sys_role_privilege values('2' , '2')
insert into selectFuPan.sys_role_privilege values('3' , '3')
insert into selectFuPan.sys_role_privilege values('1' , '4')
insert into selectFuPan.sys_role_privilege values('1' , '5')
insert into selectFuPan.sys_role_privilege values('1' , '6')

CREATE TABLE selectFuPan.`sys_privilege` (
    `id` bigint default null comment '權限id ',
    `privilege_name` varchar(50) default null comment '權限名' , 
    `privilege_url`  varchar(50) default null comment '權限訪問路徑' 
);

INSERT into selectFuPan.sys_privilege values('1' , '普通用戶登陸' , '/sys/user/selectByName')
INSERT into selectFuPan.sys_privilege values('2' , '普通管理員登陸' , '/sys/admin/selectById')
INSERT into selectFuPan.sys_privilege values('3' , '超級管理員登陸' , '/sys/superAdmin/selectAll')

我們主要要做的工作就是:

1. mybatis配置,完成數據庫映射工作

2. spring boot框架搭建,包括controller層、service層、dao層和dto實體類實現

3. 后台數據封裝傳遞到前端的類封裝Result和Results的實現。

4. 實現基本的增、刪、改和查。

具體的實現見前面文章:https://www.cnblogs.com/yeyuting/p/14262125.html

這部分項目復盤代碼實現見網址:https://github.com/yeyuting-1314/selectFuPan_selectInsertUpdateDelete.git

 

二、在實現增刪改查的基礎上實現分頁查詢。

這個部分實現要注意的點是:sql語句中的limit參數,一般我們進行分頁查詢的時候總是通過當前頁currentPage和頁面大小pageSize對查詢的頁面進行控制,而sql語句進行查詢的時候需要知道查詢起始條數startIndex和頁面大小pageSize,這時候又沒有起始條數startIndex,只知道當前頁,這時候,我們就需要找到當前頁currentPage和起始條數startIndex之前的關系,這里的currentPage和startIndex有着如下關系,startIndex = (currentPage-1) * pageSize , 這樣一來,limit中兩個參數我們都拿到了,這樣一來,分頁查詢基本思路也就出來了,在實現這個過程中,我們對前端傳過來的兩個參數進行了各式各樣的封裝,例如通過pageBean、Map、String字符串等等形式進行傳遞,但是,萬變不離其中,最后都是要拿到startIndex和pageSize才能實現最后的分頁查詢,這便是分頁查詢的整個實現過程。

具體的實現見前面文章:https://www.cnblogs.com/yeyuting/p/14262125.html

這部分項目復盤代碼實現見網址:https://github.com/yeyuting-1314/selectFuPan_selectByPage.git

 

三、攔截器和過濾器實現

攔截器和過濾器十分的類似,發揮的作用都是在程序執行前,先進入攔截器或者過濾器中實現自定義邏輯,然后再實現程序本身要實現的代碼邏輯。在這里的過濾器和攔截器中,我們利用過濾器和攔截器實現了對程序執行時間的測算,並進行了輸出,當然也沒有影響到程序的正常執行,只是在程序執行過程中多執行了過濾器和攔截器的代碼邏輯。

具體的實現見前面文章:https://www.cnblogs.com/yeyuting/p/14271086.html 和 https://www.cnblogs.com/yeyuting/p/14271277.html

這部分項目復盤代碼實現見網址:https://github.com/yeyuting-1314/selectFuPan_filterAndInterceptor.git

 

四、用戶登陸token生成與認證

這個部分主要實現用戶登陸時生成token並認證身份,在這里我們就會用到攔截器了,我們一個系統做出來,除了用戶注冊和登陸的接口是暴露出來的,其余的接口一律不能暴露給外界,我們要把他保護起來,這時就是攔截器發揮作用了,同時我們讓身份認證通過的用戶訪問其他接口。這部分主要實現token生成和相關接口攔截。

具體的實現見前面文章:https://www.cnblogs.com/yeyuting/p/14274118.html

這部分項目復盤代碼實現見網址:https://github.com/yeyuting-1314/selectFuPan_tokenGenerateAndCheck.git

 

五、用戶登陸token生成與認證之將token存放於redis中

我們日常登陸的時候用到cookie比較多,但是我們想自己生成token並對token放至專門的redis緩存中,這樣以便於管理,這時誕生了接下來要實現的代碼。

具體的實現見前面文章:https://www.cnblogs.com/yeyuting/p/14274118.html

這部分項目復盤代碼實現見網址:https://github.com/yeyuting-1314/selectFuPan_tokenAndredis.git

 

六、對用戶登陸注冊用到的redis進行封裝:

具體的實現見前面文章:https://www.cnblogs.com/yeyuting/p/14298881.html

這部分項目復盤代碼實現見網址:https://github.com/yeyuting-1314/selectFuPan_tokenAndRedisfengzhuagn.git

 

七、用戶角色權限控制(數據模擬實現)

每個用戶對應特定的角色,這里就引入的角色的控制,但是鑒於角色控制實現起來比較復雜,所以我們提前進行一個准備工作,也就是模擬數據庫實現用戶數據獲取。

具體的實現見前面文章:https://www.cnblogs.com/yeyuting/p/14311563.html

這部分項目復盤代碼實現見網址:https://github.com/yeyuting-1314/privilegeControl.git

 

八、用戶角色權限控制(數據庫實現,暫未添加資源表)

數據模擬實現后正式將角色表加入數據庫進行聯表查詢。

具體的實現見前面文章:https://www.cnblogs.com/yeyuting/p/14311965.html

這部分項目復盤代碼實現見網址:https://github.com/yeyuting-1314/selectFuPan_roleControll.git

 

九、用戶角色權限控制 加入資源表

對訪問接口賦予不同權限,並存放於資源表中,進行后續操作。

具體的實現見前面文章:https://www.cnblogs.com/yeyuting/p/14356475.html

這部分項目復盤代碼實現見網址:https://github.com/yeyuting-1314/selectFuPan_roleControll-privilege.git

 

十、用戶角色權限控制 加入資源表基礎上實現token生成集成redis和對資源進行權限分配。

具體的實現見前面文章:https://www.cnblogs.com/yeyuting/p/14365922.html

這部分項目復盤代碼實現見網址:https://github.com/yeyuting-1314/roleControll-tokenAndRedis.git

這樣一來,所有內容復盤結束了。。。。。。

至此,結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM