<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA—咖啡館

    ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

    1.HttpSessionContextIntegrationFilter

     

    位于過濾器頂端,第一個起作用的過濾器。

     

    用途一,在執行其他過濾器之前,率先判斷用戶的session中是否已經存在一個SecurityContext了。如果存在,就把SecurityContext拿出來,放到SecurityContextHolder中,供Spring Security的其他部分使用。如果不存在,就創建一個SecurityContext出來,還是放到SecurityContextHolder中,供Spring Security的其他部分使用。

     

    用途二,在所有過濾器執行完畢后,清空SecurityContextHolder,因為SecurityContextHolder是基于ThreadLocal的,如果在操作完成后清空ThreadLocal,會受到服務器的線程池機制的影響。

    -------------------------------------------------------------------------------------------- 

    2.LogoutFilter

     

    只處理注銷請求,默認為/j_spring_security_logout。

     

    用途是在用戶發送注銷請求時,銷毀用戶session,清空SecurityContextHolder,然后重定向到注銷成功頁面。可以與rememberMe之類的機制結合,在注銷的同時清空用戶cookie。

    --------------------------------------------------------------------------------------------

    3.AuthenticationProcessingFilter

     

    處理form登陸的過濾器,與form登陸有關的所有操作都是在此進行的。

    默認情況下只處理/j_spring_security_check請求,這個請求應該是用戶使用form登陸后的提交地址,form所需的其他參數可以參考:

     

     

    此過濾器執行的基本操作時,通過用戶名和密碼判斷用戶是否有效,如果登錄成功就跳轉到成功頁面(可能是登陸之前訪問的受保護頁面,也可能是默認的成功頁面),如果登錄失敗,就跳轉到失敗頁面。

     

    <form action="${pageContext.request.contextPath}/j_spring_security_check" style="width:260px;text-align:center;">
      <fieldset>
        <legend>登陸</legend>
        用戶: <input type="text" name="j_username" style="width:150px;" value="${sessionScope['SPRING_SECURITY_LAST_USERNAME']}"/><br />
        密碼: <input type="password" name="j_password" style="width:150px;" /><br />
        <input type="checkbox" name="_spring_security_remember_me" />兩周之內不必登陸<br />
        <input type="submit" value="登陸"/>
        <input type="reset" value="重置"/>
      </fieldset>
    </form>

     

     

     

     

     

    /j_spring_security_check,提交登陸信息的URL地址。

    自定義form時,要把form的action設置為/j_spring_security_check。注意這里要使用絕對路徑,避免登陸頁面存放的頁面可能帶來的問題。

     

    j_username,輸入登陸名的參數名稱。

     

    j_password,輸入密碼的參數名稱

     

    _spring_security_remember_me,選擇是否允許自動登錄的參數名稱。

    可以直接把這個參數設置為一個checkbox,無需設置value,Spring Security會自行判斷它是否被選中。

    --------------------------------------------------------------------------------------------

    4.DefaultLoginPageGeneratingFilter

     

    此過濾器用來生成一個默認的登錄頁面,默認的訪問地址為/spring_security_login,這個默認的登錄頁面雖然支持用戶輸入用戶名,密碼,也支持rememberMe功能,但是因為太難看了,只能是在演示時做個樣子,不可能直接用在實際項目中。

     

    自定義登陸頁面

    <http auto-config='true'>
        <intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />

        <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
        <intercept-url pattern="/**" access="ROLE_USER" />
        <form-login login-page="/login.jsp"

                    authentication-failure-url="/login.jsp?error=true"
                    default-target-url="/" />
    </http>

    --------------------------------------------------------------------------------------------

    5.BasicProcessingFilter

     

    此過濾器用于進行basic驗證,功能與AuthenticationProcessingFilter類似,只是驗證的方式不同。

    添加basic認證,去掉auto-config="true",并加上<http-basic />

    <http auto-config="true">
        <http-basic />
        <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
        <intercept-url pattern="/" access="ROLE_USER" />
    </http>
    ---------------------------------------------------------------------------------------------

    6.SecurityContextHolderAwareRequestFilter

     

    此過濾器用來包裝客戶的請求。目的是在原始請求的基礎上,為后續程序提供一些額外的數據。比如getRemoteUser()時直接返回當前登陸的用戶名之類的。

    ---------------------------------------------------------------------------------------------

    7.RememberMeProcessingFilter

     

    此過濾器實現RememberMe功能,當用戶cookie中存在rememberMe的標記,此過濾器會根據標記自動實現用戶登陸,并創建SecurityContext,授予對應的權限。

    在配置文件中使用auto-config="true"就會自動啟用rememberMe

    實際上,Spring Security中的rememberMe是依賴cookie實現的,當用戶在登錄時選擇使用rememberMe,系統就會在登錄成功后將為用戶生成一個唯一標識,并將這個標識保存進cookie中,我們可以通過瀏覽器查看用戶電腦中的cookie。

    ---------------------------------------------------------------------------------------------

    8.AnonymousProcessingFilter

    為了保證操作統一性,當用戶沒有登陸時,默認為用戶分配匿名用戶的權限。

    在配置文件中使用auto-config="true"就會啟用匿名登錄功能。在啟用匿名登錄之后,如果我們希望允許未登錄就可以訪問一些資源,可以在進行如下配置。

    <http auto-config='true'>
        <intercept-url pattern="/" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
        <intercept-url pattern="/**" access="ROLE_USER" />
    </http>

    設置成 ROLE_ANONYMOUS 也可以。

     

    <http auto-config='true'>
        <intercept-url pattern="/" filters="none" />
        <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
        <intercept-url pattern="/**" access="ROLE_USER" />
    </http>

    filters="none"表示當我們訪問“/”時,是不會使用任何一個過濾器去處理這個請求的,它可以實現無需登錄即可訪問資源的效果,但是因為沒有使用過濾器對請求進行處理,所以也無法利用安全過濾器為我們帶來的好處,最簡單的,這時SecurityContext內再沒有保存任何一個權限主體了,我們也無法從中取得主體名稱以及對應的權限信息。

    ---------------------------------------------------------------------------------------------

    9.ExceptionTranslationFilter

     

    此過濾器的作用是處理中FilterSecurityInterceptor拋出的異常,然后將請求重定向到對應頁面,或返回對應的響應錯誤代碼。

    ---------------------------------------------------------------------------------------------

    10.SessionFixationProtectionFilter

     

    防御會話偽造攻擊。

    解決session fix的問題其實很簡單,只要在用戶登錄成功之后,銷毀用戶的當前session,并重新生成一個session就可以了。

    <http auto-config='true' session-fixation-protection="none">
        <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
        <intercept-url pattern="/**" access="ROLE_USER" />
    </http>

     

    session-fixation-protection的值共有三個可供選擇,none,migrateSession和newSession。默認使用的是migrationSession
    ---------------------------------------------------------------------------------------------

    11.FilterSecurityInterceptor

     

    用戶的權限控制都包含在這個過濾器中。

    功能一:如果用戶尚未登陸,則拋出AuthenticationCredentialsNotFoundException“尚未認證異常”。

    功能二:如果用戶已登錄,但是沒有訪問當前資源的權限,則拋出AccessDeniedException“拒絕訪問異常”。

    功能三:如果用戶已登錄,也具有訪問當前資源的權限,則放行。

    posted on 2010-07-23 16:36 rogerfan 閱讀(699) 評論(0)  編輯  收藏 所屬分類: 【開源技術】
    主站蜘蛛池模板: 免费午夜爽爽爽WWW视频十八禁| 美女网站免费福利视频| 国产一级特黄高清免费大片| 亚洲大香人伊一本线| 最近最好最新2019中文字幕免费| 亚洲综合无码AV一区二区| 一区视频免费观看| 亚洲男人在线无码视频| a级毛片免费观看在线| 亚洲黄片手机免费观看| WWW国产成人免费观看视频| 亚洲午夜未满十八勿入网站2| 国产精品偷伦视频免费观看了| 国产亚洲精品成人AA片新蒲金| 两个人看www免费视频| 香蕉蕉亚亚洲aav综合| 最近中文字幕高清免费中文字幕mv| 亚洲视频在线观看网站| 国产精品成人免费视频网站京东| 亚洲一卡一卡二新区无人区| 四虎永久成人免费| 国产精品hd免费观看| 亚洲成人中文字幕| 性xxxxx免费视频播放| 亚洲第一成年免费网站| 伊在人亚洲香蕉精品区麻豆| 十八禁视频在线观看免费无码无遮挡骂过 | 2021精品国产品免费观看| 狠狠色香婷婷久久亚洲精品| 日本高清免费不卡在线| 国产免费一区二区三区免费视频 | 亚洲av无码专区在线观看素人| 中国内地毛片免费高清| 亚洲视频中文字幕在线| 日韩电影免费在线观看视频 | 三级毛片在线免费观看| 亚洲AV无码久久精品狠狠爱浪潮| 国产香蕉免费精品视频| 国产精品亚洲二区在线| 亚洲国产精华液网站w| 天天摸夜夜摸成人免费视频|