spring security xml配置详解

摘要:
--该路径下的资源不用过滤--˃˂!--lowercase-comparisons:表示URL比较前先转为小写。--path-type:表示使用ApacheAnt的匹配模式。--login-processing-url:指定了客户在登录页面中按下SignIn按钮时要访问的URL。--authentication-failure-url:指定了身份验证失败时跳转到的页面。--default-target-url:指定了成功进行身份验证和授权后默认呈现给用户的页面。--always-use-default-target:指定了是否在身份验证通过后总是跳转到default-target-url属性指定的URL。--logout-success-url:退出系统后转向的URL。--当exception-if-maximum-exceeded="true"时系统会拒绝第二次登录。
security 3.x
<?xml version="1.0" encoding="UTF-8"?>  
<beans:beans xmlns="http://www.springframework.org/schema/security"xmlns:beans="http://www.springframework.org/schema/beans"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-3.0.xsd    
http://www.springframework.org/schema/security   
http://www.springframework.org/schema/security/spring-security-3.1.xsd">  
    <global-method-security pre-post-annotations="enabled">  
    </global-method-security>  
    <!--该路径下的资源不用过滤 -->  
    <http pattern="/include/js/**"security="none" />  
    <http pattern="/include/css/**"security="none" />  
    <http pattern="/include/scripts/**"security="none" />  
    <http pattern="/include/jsp/**"security="none" />  
    <http pattern="/images/**"security="none" />  
    <http pattern="/login.jsp"security="none" />  
    <!--auto-config = true 则使用from-login. 如果不使用该属性 则默认为http-basic(没有session).-->  
    <!--lowercase-comparisons:表示URL比较前先转为小写。-->  
        <!--path-type:表示使用Apache Ant的匹配模式。-->  
    <!--access-denied-page:访问拒绝时转向的页面。-->  
    <!--access-decision-manager-ref:指定了自定义的访问策略管理器。-->  
      
    <http use-expressions="true"auto-config="true"access-denied-page="/include/jsp/timeout.jsp">  
<!--login-page:指定登录页面。  -->  
<!--login-processing-url:指定了客户在登录页面中按下 Sign In 按钮时要访问的 URL。-->  
        <!--authentication-failure-url:指定了身份验证失败时跳转到的页面。-->  
        <!--default-target-url:指定了成功进行身份验证和授权后默认呈现给用户的页面。-->  
<!--always-use-default-target:指定了是否在身份验证通过后总是跳转到default-target-url属性指定的URL。 
-->  
          
<form-login login-page="/login.jsp"default-target-url='/system/default.jsp'always-use-default-target="true"authentication-failure-url="/login.jsp?login_error=1" />  
<!--logout-url:指定了用于响应退出系统请求的URL。其默认值为:/j_spring_security_logout。-->  
        <!--logout-success-url:退出系统后转向的URL。-->  
        <!--invalidate-session:指定在退出系统时是否要销毁Session。-->  
        <logout invalidate-session="true"logout-success-url="/login.jsp"logout-url="/j_spring_security_logout" />  
        <!--实现免登陆验证 -->  
        <remember-me />  
  
        <!--max-sessions:允许用户帐号登录的次数。范例限制用户只能登录一次。-->  
<!--此值表示:用户第二次登录时,前一次的登录信息都被清空。-->  
 <!--exception-if-maximum-exceeded:默认为false,-->  
<!--当exception-if-maximum-exceeded="true"时系统会拒绝第二次登录。-->  
  
        <session-management invalid-session-url="/login.jsp"session-fixation-protection="none">  
            <concurrency-control max-sessions="1"error-if-maximum-exceeded="false" />  
        </session-management>  
        <custom-filter ref="myFilter"before="FILTER_SECURITY_INTERCEPTOR" />  
        <session-management  
            session-authentication-strategy-ref="sas" />  
  
    </http>  
<beans:bean id="sas"class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy">  
        <beans:constructor-arg name="sessionRegistry"ref="sessionRegistry" />  
        <beans:property name="maximumSessions"value="1" />  
        <!--防止session攻击 -->  
        <beans:property name="alwaysCreateSession"value="true" />  
        <beans:property name="migrateSessionAttributes"value="false" />  
        <!--同一个帐号 同时只能一个人登录 -->  
        <beans:property name="exceptionIfMaximumExceeded"value="false" />  
    </beans:bean>  
    <beans:bean id="sessionRegistry"class="org.springframework.security.core.session.SessionRegistryImpl" />  
    <!--事件监听:实现了ApplicationListener监听接口,包括AuthenticationCredentialsNotFoundEvent 事件,-->  
    <!--AuthorizationFailureEvent事件,AuthorizedEvent事件, PublicInvocationEvent事件-->  
    <beans:bean  
        class="org.springframework.security.authentication.event.LoggerListener" />  
    <!--自定义资源文件   提示信息 -->  
    <beans:bean id="messageSource"class="org.springframework.context.support.ReloadableResourceBundleMessageSource">  
        <beans:property name="basenames"value="classpath:message_zh_CN">  
</beans:property>  
    </beans:bean>  
    <!--配置过滤器 -->  
    <beans:bean id="myFilter"class="com.taskmanager.web.security.MySecurityFilter">  
    <!--用户拥有的权限 -->  
    <beans:property name="authenticationManager"ref="myAuthenticationManager" />  
    <!--用户是否拥有所请求资源的权限 -->  
    <beans:property name="accessDecisionManager"ref="myAccessDecisionManager" />  
    <!--资源与权限对应关系 -->  
    <beans:property name="securityMetadataSource"ref="mySecurityMetadataSource" />  
    </beans:bean>  
    <!--实现了UserDetailsService的Bean -->  
    <authentication-manager alias="myAuthenticationManager">  
        <authentication-provider user-service-ref="myUserDetailServiceImpl">  
            <!--登入 密码  采用MD5加密 -->  
            <password-encoder hash="md5"ref="passwordEncoder">  
            </password-encoder>  
        </authentication-provider>  
    </authentication-manager>  
    <!--验证用户请求资源  是否拥有权限 -->  
    <beans:bean id="myAccessDecisionManager"class="com.taskmanager.web.security.MyAccessDecisionManager">  
    </beans:bean>  
    <!--系统运行时加载 系统要拦截的资源   与用户请求时要过滤的资源 -->  
    <beans:bean id="mySecurityMetadataSource"class="com.taskmanager.web.security.MySecurityMetadataSource">  
        <beans:constructor-arg name="powerService"ref="powerService">  
</beans:constructor-arg>  
    </beans:bean>  
    <!--获取用户登入角色信息 -->  
    <beans:bean id="myUserDetailServiceImpl"class="com.taskmanager.web.security.MyUserDetailServiceImpl">  
        <beans:property name="userService"ref="userService"></beans:property>  
    </beans:bean>  
  
    <!--用户的密码加密或解密 -->  
    <beans:bean id="passwordEncoder"class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" />  
</beans:beans>    
security 4.x
<beans:beans  
        xmlns="http://www.springframework.org/schema/security"xmlns:beans="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans  
          http://www.springframework.org/schema/beans/spring-beans.xsd  
          http://www.springframework.org/schema/context  
          http://www.springframework.org/schema/context/spring-context.xsd  
          http://www.springframework.org/schema/security  
              http://www.springframework.org/schema/security/spring-security.xsd">  
  
  
    <context:component-scan base-package="com.framework.security"/>  
  
  
    <!--<http pattern="/pm/**" security="none" />-->  
    <http pattern="/login.jsp"security="none" />  
    <http pattern="/common/**"security="none" />  
    <http pattern="/*.ico"security="none" />  
  
  
    <http  use-expressions="false" >  
        <!--IS_AUTHENTICATED_ANONYMOUSLY 匿名登录 -->  
        <intercept-url pattern="/login"access="IS_AUTHENTICATED_ANONYMOUSLY" />  
        <intercept-url pattern="/pm/**/*.jsp"access="ROLE_STATIC" />  
        <form-login login-page="/login"authentication-failure-url="/login?error=1"authentication-success-forward-url="/main.to" />  
        <logout invalidate-session="true"logout-url="/logout"logout-success-url="/"  />  
        <http-basic/>  
        <headers >  
            <frame-options disabled="true"></frame-options>  
        </headers>  
  
  
        <csrf token-repository-ref="csrfTokenRepository" />  
  
  
        <session-management session-authentication-error-url="/frame.expired" >  
            <!--max-sessions只容许一个账号登录,error-if-maximum-exceeded 后面账号登录后踢出前一个账号,expired-url session过期跳转界面 -->  
            <concurrency-control max-sessions="1"error-if-maximum-exceeded="false"expired-url="/frame.expired"session-registry-ref="sessionRegistry" />  
        </session-management>  
  
  
        <expression-handler ref="webexpressionHandler" ></expression-handler>  
    </http>  
  
  
    <beans:bean id="sessionRegistry"class="org.springframework.security.core.session.SessionRegistryImpl" />  
  
  
    <beans:bean id="userDetailsService"class="com.framework.security.UserDetailsServiceImpl" />  
  
  
    <!--配置web端使用权限控制-->  
    <beans:bean id="webexpressionHandler"class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler" />  
  
  
    <authentication-manager >  
        <authentication-provider ref="authenticationProvider" />  
    </authentication-manager>  
  
  
    <!--自定义userDetailsService, 盐值加密 -->  
    <beans:bean id="authenticationProvider"class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">  
        <beans:property name="hideUserNotFoundExceptions"value="true" />  
        <beans:property name="userDetailsService"ref="userDetailsService" />  
        <beans:property name="passwordEncoder"ref="passwordEncoder" />  
        <beans:property name="saltSource"ref="saltSource" />  
    </beans:bean>  
  
  
    <!--Md5加密 -->  
    <beans:bean id="passwordEncoder"class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" />  
  
  
    <!--盐值加密 salt对应数据库字段-->  
    <beans:bean id="saltSource"class="org.springframework.security.authentication.dao.ReflectionSaltSource">  
        <beans:property name="userPropertyToUse"value="salt"/>  
    </beans:bean>  
  
  
    <beans:bean id="csrfTokenRepository"class="org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository" />  
</beans:beans>  

免责声明:文章转载自《spring security xml配置详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Netty异步编程模型上的同步调用图片保存到数据库以及C#读取图片下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

xml的定义以及用途

1.xml的定义用途 XML全称为 Extensible Markup Language,意思是可扩展的标记语言。XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的。W3C在1998年2月发布1.0版本,2004年2月又发布1.1版本,但因为1.1版本不能向下兼容1.0版本,所以1.1没人用。同时,在2004年2...

XXE漏洞复习版本

题记 昨天把很久之前看的XXE、SSRF、../../目录遍历什么的漏洞详细复习了一遍,又读出来不少新东西。来不及了,我们不能把时间浪费在迷茫上。 这次先整理XXE。XXE,外部传入的XML代码。 本来整理一半放弃了,我觉得人家写的挺好的,自己也理解了,看人家的就行,后来又觉得自己重新整一遍才好,过一遍脑子。 XXE介绍 "攻击者通过向服务器注入指定的xm...

Java自动化 接口测试Cookie与token

一、Cookie与token机制测试   Cookie与Session token机制 cookie/session机制需要在服务端保存大量的session信息,造成严重负担,而token机制则避免记录大量信息,采用服务器签发的token完成验证。 1、客户端使用用户名跟密码请求登录 2、服务端收到请求,去验证用户名与密码 3、验证成功后,服务...

spring+cxf 开发webService(主要是记录遇到spring bean注入不进来的解决方法)

这里不介绍原理,只是记录自己spring+cxf的开发过程和遇到的问题 场景:第三方公司需要调用我们的业务系统,以xml报文的形式传递数据,之后我们解析报文存储到我们数据库生成业务单据; WebService的框架由多种,这里选cxf,与Spring的集成比较好; 直接看代码 1项目用的maven,首先添加依赖(这个依赖啊 ,教程引用几个的都有,这个看需要...

IOS 蓝牙(GameKit、Core Bluetooth)

GameKit的蓝牙开发注意 ● 只能用于iOS设备之间的连接● 只能用于同一个应用程序之间的连接 ● 最好别利用蓝牙发送比较大的数据/*关于蓝牙的数据传输1. 一次性传送,没有中间方法,所谓中间方法值得是,传输进度比例对于用户而言,选择了传输,就需要等待传输完成,或者传输以失败告终这就意味着,在实际开发过程中,最好不要用蓝牙传输太大的文件在实际应用...

ActiveMQ之JMS及保证消息的可靠性&amp;lt;持久化、事务、签收&amp;gt;(三)

1.JAVAEE 是一套使用Java 进行企业级开发的13 个核心规范工业标准 , 包括:  JDBC  数据库连接  JNDI  Java的命名和目录接口  EJB   Enterprise java bean  RMI   远程方法调用    一般使用TCP/IP 协议  Java IDL    接口定义语言  JSP      Servlet   X...