轉自: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>