在我們的學習大全中,我們終於將一整個項目完整的實現了,寫完后我們還要做一件很重要的事情,就是復盤,跟着之前的筆記博客,從最開始的步驟開始,再次實現整個項目過程。
一、單純的實現用戶的增刪改查。
我們對數據庫表單進行重現,數據庫名字名為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
這樣一來,所有內容復盤結束了。。。。。。
至此,結束。