spring-security

Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。

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

猜你喜欢

转载自lanrikey.iteye.com/blog/2357470