<?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>html