spring-security 配置文件

轉自:spring-security學習筆記--配置文件html

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:sec="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd"
    default-lazy-init="true">
    <!-- 
        auto-config = true 則使用from-login. 若是不使用該屬性 則默認爲http-basic(沒有session). 
        lowercase-comparisons:表示URL比較前先轉爲小寫。
        path-type:表示使用Apache Ant的匹配模式。
        access-denied-page:訪問拒絕時轉向的頁面。
        access-decision-manager-ref:指定了自定義的訪問策略管理器。當系統角色名的前綴不是默認的ROLE_時,須要自定義訪問策略管理器。
     -->
    <sec:http auto-config="true" servlet-api-provision="false" lowercase-comparisons="false"
        access-denied-page="/html/error_page_access_denied.html" path-type="ant"
        access-decision-manager-ref="accessDecisionManager">
        <!-- 
            login-page:指定登陸頁面。
            login-processing-url:指定了客戶在登陸頁面中按下 Sign In 按鈕時要訪問的 URL。與登陸頁面form的action一致。其默認值爲:/j_spring_security_check。
            authentication-failure-url:指定了身份驗證失敗時跳轉到的頁面。
            default-target-url:指定了成功進行身份驗證和受權後默認呈現給用戶的頁面。
            always-use-default-target:指定了是否在身份驗證經過後老是跳轉到default-target-url屬性指定的URL。
         -->
        <sec:form-login login-page="/admin/page!login.action" login-processing-url="/admin/login" 
            default-target-url="/admin/page!main.action" authentication-failure-url="/admin/page!login.action" 
            always-use-default-target="true"  />
            
        <!-- "記住我"功能,採用持久化策略(將用戶的登陸信息存放在數據庫表中) -->
        <sec:remember-me key="e37f8888-0ooo-22dd-bd0b-9900211c9a66" />
        <!-- 
            logout-url:指定了用於響應退出系統請求的URL。其默認值爲:/j_spring_security_logout。
            logout-success-url:退出系統後轉向的URL。
            invalidate-session:指定在退出系統時是否要銷燬Session。
         -->
        <sec:logout invalidate-session="true" logout-success-url="/admin/page!login.action" 
            logout-url="/admin/logout" />
        <!-- 
            max-sessions:容許用戶賬號登陸的次數。範例限制用戶只能登陸一次。
            exception-if-maximum-exceeded: 默認爲false,此值表示:用戶第二次登陸時,前一次的登陸信息都被清空。
            當exception-if-maximum-exceeded="true"時系統會拒絕第二次登陸。
         -->
        <sec:concurrent-session-control max-sessions="1" exception-if-maximum-exceeded="false" />
        
        <!-- 後臺登陸 -->
        <!-- intercept-url:攔截器,能夠設定哪些路徑須要哪些權限來訪問. filters=none 不使用過濾,也能夠理解爲忽略 --> 
        <sec:intercept-url pattern="/admin/page!login.action" filters="none" />
        <!-- 商品管理 -->
        <sec:intercept-url pattern="/admin/goods!**" access="ROLE_GOODS" />
        <!-- 基礎管理權限 -->
        <sec:intercept-url pattern="/admin/**" access="ROLE_BASE" />
        <!-- 
                   下面是對Struts2的Action請求時的配置。注意在前面加/,不然不會被攔截驗證。
                          表示具備訪問/unitsManager資源的用戶必須具備ROLE_PLATFORMADMIN的權限。
                          當用戶登陸時,將用戶的全部權限從數據庫中提取出來,造成列表。 當用戶訪問該資源時,
                          將登陸用戶的權限列表提出來跟下面配置的權限進行比對,如有,則容許訪問,若沒有,
                          則給出AccessDeniedException。     
         -->
        <sec:intercept-url pattern="/unitsManager" access="ROLE_PLATFORMADMIN" />
        <sec:intercept-url pattern="/usersManager" access="ROLE_PLATFORMADMIN" />
        <sec:intercept-url pattern="/horizontalQuery" access="ROLE_PLATFORMADMIN" />
        <sec:intercept-url pattern="/verticalQuery" access="ROLE_PLATFORMADMIN" /> 
    </sec:http>

    <sec:authentication-provider user-service-ref="adminDetailsServiceImpl">
        <sec:password-encoder hash="md5" />
    </sec:authentication-provider>

</beans>
相關文章
相關標籤/搜索