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