【Java】JavaWeb權限管理


權限管理分析

  每個網站都涉及到訪問權限的控制。每個站點資源都需要被管理起來,用戶只有具有訪問某個資源的特定權限,才能夠訪問,否則拒絕訪問。網站的訪問權限控制,一種方法從 URI 入手,站點的每個資源都用唯一的 URI 描述,我們為想要管理起來的 URI 增加上權限屬性,當用戶訪問資源時我們要先檢查用戶是否具有權限。采用過濾器技術實現權限攔截,進行判斷,有權限即可訪問,沒有就阻止。另一種方法是采用入口有無的形式來做,根據后台數據判斷有權限則界面有權限入口,沒有權限則沒有入口

權限數據庫設計

  數據庫采用如下設計,總共由5張表組成,用戶表、角色表、資源表、用戶角色表和角色資源表。一個用戶可以擁有多個角色,一個角色擁有多個資源。

      

    

 1 CREATE TABLE `user` (
 2   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
 3   `username` varchar(32) DEFAULT NULL COMMENT '用戶名',
 4   `password` varchar(32) DEFAULT NULL COMMENT '密碼',
 5   PRIMARY KEY (`id`)
 6 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表';
 7 
 8 CREATE TABLE `role` (
 9   `id` int(11) NOT NULL AUTO_INCREMENT,
10   `name` varchar(32) DEFAULT NULL COMMENT '角色名',
11   `desc` varchar(32) DEFAULT NULL COMMENT '角色描述',
12   PRIMARY KEY (`id`)
13 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色表';
14 
15 CREATE TABLE `resource` (
16   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
17   `title` varchar(32) DEFAULT NULL COMMENT '資源標題',
18   `uri` varchar(32) DEFAULT NULL COMMENT '資源uri  ',
19   PRIMARY KEY (`id`)
20 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='資源表';
21 
22 CREATE TABLE `user_role` (
23   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
24   `user_id` int(11) NOT NULL COMMENT '用戶id',
25   `role_id` int(11) NOT NULL COMMENT '角色id',
26   PRIMARY KEY (`id`)
27 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶角色表';
28 
29 CREATE TABLE `role_resource` (
30   `id` int(11) NOT NULL AUTO_INCREMENT,
31   `role_id` int(11) DEFAULT NULL COMMENT '角色id',
32   `resource_id` int(11) DEFAULT NULL COMMENT '資源id',
33   PRIMARY KEY (`id`)
34 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色資源表';
db.sql

 

攔截器控制權限

  界面通過url進行請求,由攔截器進行攔截,根據用戶的信息,去數據庫中查詢此用戶是否具有本次請求了url權限,如果有就通過請求,讓他訪問資源,如果沒有就返回,提示用戶不具有該資源的反問權限

 

控制入口控制權限

  •   比如后台的菜單按鈕,沒一個按鈕對應的是一個資源。在顯示按鈕的時候,可以通過后台先查詢此用戶具有那些資源,然后根據資源可以對應的像是這些按鈕。此方法可以做到按鈕級別的權限控制。
  •   web網頁,還可以同過自定義標簽來實現入口的控制。自定義標簽參照:【JSP】自定義標簽開發入門

     如:<diy:power value="${url}"><a>權限按鈕</a></diy:power>

     此標簽根據value,在后台查詢數據庫去判斷是否具有權限,覺得標簽內容是否顯示


免責聲明!

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



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