基於struts專案許可權解決方案的探索 (轉)
基於專案解決方案的探索:namespace prefix = o ns = "urn:schemas--com::office" />
前一段時間我曾專門閱讀過一些關於JAAS的資料,網上這方面的資料不多,篇篇文章都是側重於講述一些核心的JAAS類(不過講的蠻不錯的,呵呵。。。對於這方面的極好),而對於應用方面給我的感覺就像:
“天啊,幾乎沒有人用到它~!”
還好chinaxp論壇的中涉及了這方面的應用,而且它們就是那樣做的,這其中給了我不少啟示。
目前在我參與的一個專案(正在開發)中,我採用JAAS的驗證機制(其中的授權部分因為沒有非常熟悉的掌握所以暫時沒有采用,而暫時採用另外一種方法來解決,這種方法再接下來的部分涉及。)
先說一些我以其為背景的這個專案:
它算是一個比較大的專案(省級高速公路路政工作平臺),大的劃分可以分為10個大模組26個子模組,具體分為基本資訊維護、路政案件、路政審批等等大模組;許可權主要是(對某一模組的維護、瀏覽以及列印等)
經過討論我們在設計許可權的時候是這樣考慮的:
分為三個“角色”:、使用者組、許可權;
他們的關係為:使用者屬於某個使用者組;許可權下放到使用者組。(這一切都是和“當場客戶代表”共同討論決定的。)
如下表是許可權的內容:
rightID
rightName
00100
維護基本資訊
00101
瀏覽基本資訊
00500
維護路產資訊
00501
瀏覽路產資訊
……
……
其中模組用xml,如:
module_config.xml
……
(採用單例在容器啟動的時候進行解析)
把具體的許可權繫結到每一個*.do請求:
request_.xml
……
(也是在容器啟動的時候解析並放到容器中)
系統中許可權流程控制基本上我把它分為兩個步驟:
1. 利用filter以及JAAS來進行使用者的過濾
其中所有的*.也要透過*.do來引導,這樣就能確保整個系統中沒有許可權“盲點”,也即可以保證每一個*.do都是“乾淨的”。
這其中涉及到以下幾個,具體的程式碼在此不給出:
(1)iRoadLogin.config
IRoadLogin{
com.ifreeway.iroad.security.DataBaseLoginModule required de=true;
};
這個檔案在建立LoginContext的時候根據這個檔案來確定該載入哪個LoginModule物件。
(2)ParseRequestFilter.
對每一個請求進行非法使用者的過濾。
(3)DataBaseLoginModule.java
(4)SimpleCallbackHandler.java
上邊的幾個類的介紹涉及過多的JAAS核心類的內容,建議閱讀下面連線的內容:
0114/1648365.shtml">這篇文章對於你瞭解JAAS絕對有幫助,你也可以透過我的站點來閱讀更多的JAAS資料:
2. 2. 在確保是合法使用者(已經透過1。的過濾的使用者)請求*.do的時候再來判斷該使用者是否擁有請求該do的權利。
可以在每個action的父類BaseAction中建立一個方法來判斷是否合法,如:
public Boolean validateRight(String _request_do) throws ErrorRequestException{
//取得user所在的組:a
//根據_request_do,假設其為:useradmin.do
//獲得其所在的組:b
//然後根據兩次組(a 和 b)是否是同一組來判斷該請求是否合法
//此時的a和b都是很容易在容器中獲得的,不會損失效能。
}
前提:專案中的又一個公共的BaseAction,其他的action都要繼承它。這一點我想使用struts開發專案的開發員都是很容易理解的。
如:有一個UserAdminAction.java
那麼在這個它的時候首先validateRight(“useradmin.do”)來進行許可權判斷,如果返回false,那麼跳轉到error頁。
其實我上邊所寫出的解決方法在我現在的專案中是夠用的。是誰說過:“夠用為原則”?專案的許可權設計這部分實在是個非常大的討論題目,這裡算是拋磚引玉,希望給你一點提示,也希望你可以給我一些更好方法的提示,to:你可以透過plateau_t@sina.com">你可以透過plateau_t@sina.com和我聯絡,也可以訪問我的站點()給我留言。
Jplateau 2003年10月20日星期一 精博
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-962726/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Jenkins配置基於角色的專案許可權管理Jenkins
- vue許可權問題解決方案Vue
- vue基於d2-admin的RBAC許可權管理解決方案Vue
- 【轉】關於MySQL許可權MySql
- React基於RBAC的許可權控制React
- casbin基於golang的許可權控制Golang
- AIX 的許可許可權(轉)AI
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- 基於webpack搭建前端工程解決方案探索Web前端
- 關於移除 .user.ini檔案報錯,提示沒有許可權問題解決方案
- macOS 系統 Root 管理員許可權漏洞解決方案Mac
- PHP專案許可權設定PHP
- linux基礎:檔案安全與許可權(轉)Linux
- 基於casbin的RBAC許可權實踐
- 基於RBAC的許可權管理系統
- 基於 PHP 反射的許可權匯入PHP反射
- 基於RBAC的許可權設計模型模型
- 刪除檔案需要管理員許可權win10的最佳解決方案Win10
- 基於RBAC實現許可權管理
- 基於RBAC做資料許可權
- 基於Struts的第一個專案
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- 基於 PHP-Casbin 的 ABAC 許可權控制PHP
- 基於Linux許可權提升的資訊收集Linux
- STRUTS+HIBERNATE 架構的許可權管理架構
- 基於tp3.2.3開發的許可權管理系統,路由,微信,cdn,許可權路由
- 解讀Linux檔案許可權的設定方法(轉)Linux
- 基於註解的6.0許可權動態請求框架——JPermission框架
- TC (Teamcenter) 許可證解決方案
- 基於角色的許可權系統的問題
- Xcode7由於許可權不足導致不能修改程式碼的解決方案XCode
- 關於oracle檔案許可權的問題Oracle
- 探索Android Q上的位置許可權Android
- 【專案實踐】一文帶你搞定頁面許可權、按鈕許可權以及資料許可權
- 我的Django專案中的許可權機制Django
- linux檔案許可權 詳解Linux
- Linux檔案許可權詳解Linux
- TP 基於選單的許可權控制CMS框架框架