Spring Security手冊更新——添加“管理會話”和對namespace,database的整理
posted @ 2009-06-22 10:02 臨遠 閱讀(1112) | 評論 (3) | 編輯 收藏
xyz20003www.mossle.com
隨筆 - 34, 文章 - 0, 評論 - 124, 引用 - 0
|
Spring Security手冊更新——添加“管理會話”和對namespace,database的整理posted @ 2009-06-22 10:02 臨遠 閱讀(1112) | 評論 (3) | 編輯 收藏 圖解Spring Security默認使用的過濾器第 9 章 圖解過濾器位于過濾器頂端,第一個起作用的過濾器。 用 途一,在執行其他過濾器之前,率先判斷用戶的session中是否已經存在一個SecurityContext了。如果存在,就把 SecurityContext拿出來,放到SecurityContextHolder中,供Spring Security的其他部分使用。如果不存在,就創建一個SecurityContext出來,還是放到SecurityContextHolder中, 供Spring Security的其他部分使用。 用途二,在所有過濾器執行完畢后,清空SecurityContextHolder,因為SecurityContextHolder是基于ThreadLocal的,如果在操作完成后清空ThreadLocal,會受到服務器的線程池機制的影響。 只處理注銷請求,默認為/j_spring_security_logout。 用途是在用戶發送注銷請求時,銷毀用戶session,清空SecurityContextHolder,然后重定向到注銷成功頁面。可以與rememberMe之類的機制結合,在注銷的同時清空用戶cookie。 處理form登陸的過濾器,與form登陸有關的所有操作都是在此進行的。 默認情況下只處理/j_spring_security_check請求,這個請求應該是用戶使用form登陸后的提交地址,form所需的其他參數可以參考:???。 此過濾器執行的基本操作時,通過用戶名和密碼判斷用戶是否有效,如果登錄成功就跳轉到成功頁面(可能是登陸之前訪問的受保護頁面,也可能是默認的成功頁面),如果登錄失敗,就跳轉到失敗頁面。 此過濾器用來生成一個默認的登錄頁面,默認的訪問地址為/spring_security_login,這個默認的登錄頁面雖然支持用戶輸入用戶名,密碼,也支持rememberMe功能,但是因為太難看了,只能是在演示時做個樣子,不可能直接用在實際項目中。 如果想自定義登陸頁面,可以參考:第 4 章 自定義登陸頁面。 此過濾器用于進行basic驗證,功能與AuthenticationProcessingFilter類似,只是驗證的方式不同。有關basic驗證的詳細情況,我們會在后面的章節中詳細介紹。 有關basic驗證的詳細信息,可以參考:第 12 章 basic認證。 此過濾器用來包裝客戶的請求。目的是在原始請求的基礎上,為后續程序提供一些額外的數據。比如getRemoteUser()時直接返回當前登陸的用戶名之類的。 此過濾器實現RememberMe功能,當用戶cookie中存在rememberMe的標記,此過濾器會根據標記自動實現用戶登陸,并創建SecurityContext,授予對應的權限。 有關rememberMe功能的詳細信息,可以參考:第 14 章 自動登錄。 此過濾器的作用是處理中FilterSecurityInterceptor拋出的異常,然后將請求重定向到對應頁面,或返回對應的響應錯誤代碼。 防御會話偽造攻擊。有關防御會話偽造的詳細信息,可以參考:第 16 章 防御會話偽造。 用戶的權限控制都包含在這個過濾器中。 功能一:如果用戶尚未登陸,則拋出AuthenticationCredentialsNotFoundException“尚未認證異常”。 功能二:如果用戶已登錄,但是沒有訪問當前資源的權限,則拋出AccessDeniedException“拒絕訪問異常”。 功能三:如果用戶已登錄,也具有訪問當前資源的權限,則放行。 至此,我們完全展示了默認情況下Spring Security中使用到的過濾器,以及每個過濾器的應用場景和顯示功能,下面我們會對這些過濾器的配置和用法進行逐一介紹。 posted @ 2009-06-15 10:39 臨遠 閱讀(3627) | 評論 (6) | 編輯 收藏 Spring Security-2.0導航-基礎篇,又添兩章目前我們在基礎篇中已經編寫了六章,基本上可以帶新手從頭開始使用Spring Security了,稍稍還帶了一些定制的功能,有深有淺,等到下次整理時再考慮是否細分章節,深挖內容。
基礎篇中的六部分內容。
第一部分,怎么用最小配置完成一個Spring Security項目。 第二部分,如果使用數據庫保存用戶權限信息,該怎么配置。 第三部分,如果不想用默認的數據庫結構,怎么適配已有的表結構。 第四部分,大家肯定嫌默認的登錄頁面太丑,這個時候怎么用自己制作的登錄頁面替換默認頁面。 第五部分,把資源信息也寫到數據庫中。 第六部分,有關用戶的一些操作,諸如用戶加密,用戶緩存,獲取當前用戶等等。
對于還在探索嘗試階段中的我們,給予反饋是對我們的最大幫助了。如果沒有反饋意見,就很難有機會把這些寫的更好。THx. posted @ 2009-06-10 10:34 臨遠 閱讀(2055) | 評論 (6) | 編輯 收藏 Spring Security-2.0入門教程
歡迎閱讀咱們寫的Spring Security教程,咱們既不想寫一個簡單的入門教程,也不想翻譯已有的國外教程。咱們這個教程就是建立在咱們自己做的OA的基礎上,一點一滴總結出來的經驗和教訓。
首先必須一提的是,Spring Security出身名門,它是Spring的一個子項目http://static.springsource.org/spring-security/site/index.html。它之前有個很響亮的名字Acegi。這個原本坐落在sf.net上的項目,后來終于因為跟spring的緊密連接,在2.0時成為了Spring的一個子項目。 即 使是在開源泛濫的Java領域,統一權限管理框架依然是稀缺的,這也是為什么Spring Security(Acegi)已出現就受到熱捧的原因,據俺 們所知,直到現在也只看到apache社區的jsecurity在做同樣的事情。(據小道消息,jsecurity還很稚嫩。) Spring Security(Acegi)支持一大堆的權限功能,然后它又和Spring這個當今超流行的框架整合的很緊密,所以我們選擇它。實際上自從Acegi時代它就很有名了。 目前我們編寫了四章用于Spring Security入門的文檔,基本上可以帶新手從頭開始使用Spring Security了。 1. 一個簡單的HelloWorld 1.1. 配置過濾器 1.2. 使用命名空間 1.3. 完善整個項目 1.4. 運行示例 2. 使用數據庫保存權限信息 2.1. 修改配置文件 2.2. 數據庫表結構 3. 自定義數據庫表結構 3.1. 自定義表結構 3.2. 初始化數據 3.3. 配置Spring Security 3.3.1. 處理用戶登陸 3.3.2. 檢驗用戶權限 4. 自定義登陸頁面 4.1. 實現自定義登陸頁面 4.2. 修改配置文件 4.3. 登陸頁面中的參數配置 4.4. 測試一下 教程在線瀏覽地址:http://www.family168.com/oa/springsecurity/html/index.html posted @ 2009-06-04 18:12 臨遠 閱讀(3974) | 評論 (8) | 編輯 收藏 |
|