近幾天不是很忙,就想看看關于
WEB
方式
(Jsp)
后臺權限控制的設計實現問題
,
在
Google
搜了一下,一大堆的東西,當看到頭大的時候決定自己先試著做一個簡單例子。
?
先推薦大家有時間看一下關于
RBAC
即角色訪問控制
(Role Based? Access Control)
的相關文章,雖然已經是個老話題了
,
但如果要在一個大的項目中實現權限控制的話,最好還是按照這些文章中的設計去逐步實現。
?
以下的設計只是一個簡單的控制,可以應用在一些小成本的項目中。也可能不是最好的解決方法,但旨在與大家交流及共享。各位見笑,閑話少續,言歸正傳。
?
我的設計思路是這樣的:
?
1,
管理員用戶表中有個字段專門記錄每個用戶所擁有的權限。
2,
權限和文件名對應,比如有個權限的名稱叫新聞編輯,而與此編輯權限對應的文件有:
News_add.jsp,News_del.jsp,News.action
等,他們之間是一對多的關系。如下圖:
?
如果還不明白,請繼續往下看:我的想法是這樣的
…
比如
a
用戶如果有新聞編輯的權限,那么在
a
用戶記錄權限的字段里就應該記錄
New_add.jsp,News_del.jsp,News.acion
這些值。
?
3
,那么具體怎么對資源進行控制呢?首先在用戶登陸后,將用戶的所以信息以對象的形式放入
Session
中。如將用戶對象
auser
放入到
session
中,則可用類似
AdminUser adminuser = (AdminUser) session.getAttribute("auser")
adminuser.getUserPopedom()
的方法將該用戶所擁有的權限字符取出來,我們這里取出來的字符會是
New_add.jsp,News_del.jsp,News.acion
。那么在需要做控制的頁面首先利用
String url = servletRequest.getRequestURI();
url = url.substring(url.lastIndexOf("/") + 1, url.length());
取出當前頁的文件名,再將此文件名與該用戶的權限字符做比較,如果該文件名在權限字符中可以找到,則表明該用戶擁有此頁面操作的權限。
今天先寫到這里,明天把相關代碼給貼出來...