spring security 配置 intercept-url 时需要注意的几个问题

原创 2013年12月03日 11:25:49

Spring Security 正则表达

Posted on March 8, 2012 by kevin

By default, after you’ve added Spring Security to your Roo app with ‘security setup’, you get an example config in a applicationContext-security.xml file like this:

    <http auto-config="true" use-expressions="true">
        <form-login login-processing-url="/resources/j_spring_security_check" login-page="/login" authentication-failure-url="/login?login_error=t"/>
        <logout logout-url="/resources/j_spring_security_logout"/>

        <!-- Configure these elements to secure URIs in your application -->
        <intercept-url pattern="/choices/**" access="hasRole('ROLE_ADMIN')"/>
        <intercept-url pattern="/member/**" access="isAuthenticated()" />
        <intercept-url pattern="/resources/**" access="permitAll" />
        <intercept-url pattern="/**" access="permitAll" />
    </http>

The default pattern matching approach is to use Ant style path matching. If you need to be more specific for what URLs you need to define security against, then you can change to use regex style pattern matching by adding this attribute to the <http> element:

<http ... path-type="regex" ... >

Now, let’s say you need to have different roles for creating verses listing member records – Spring Roo uses a couple of GET parameters to distinguish between these actions, so using regex you can match on these like this:

        <intercept-url pattern="/member?form" access="hasRole('ROLE_ADMIN')" />
        <intercept-url pattern="/member?page.*" access="hasRole('ROLE_USER')" />
- See more at: http://www.kevinhooke.com/2012/03/08/configuring-spring-security-for-finer-grained-url-pattern-matching-with-a-spring-roo-app/#sthash.Y7x8MpVv.dpuf



Spring Security 顺序问题

http://www.fengfly.com/document/springsecurity3/core-web-filters.html

<bean id="filterInvocationInterceptor"
     class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
  <property name="authenticationManager" ref="authenticationManager"/>
  <property name="accessDecisionManager" ref="accessDecisionManager"/>
  <property name="runAsManager" ref="runAsManager"/>
  <property name="securityMetadataSource">
    <security:filter-security-metadata-source path-type="regex">
      <security:intercept-url pattern="\A/secure/super/.*\Z" access="ROLE_WE_DONT_HAVE"/>
      <security:intercept-url pattern="\A/secure/.*\" access="ROLE_SUPERVISOR,ROLE_TELLER"/>
    </security:filter-security-metadata-source>
  </property>
</bean>        

模式总是根据他们定义的顺序进行执行。因此很重要的是,把更确定的模式定义到列表的上面。 这会反映在你上面的例子中,更确定的/secure/super/模式放在,没那么确定的 /secure/模式的上面。如果它们被反转了。/secure/会一直 被匹配,/secure/super/就永远也不会执行。


多参数问题


<intercept-url pattern="/player/\?movie=warring-state.*" access="permitAll" />    
可以匹配 /video/edit?t=testtitle1&v=12   或者  /video/edit?t=testtitle1

相关文章推荐

Spring Security intercept url

其典型用法是在配置文件的Bean中定义:                                                             ...

Spring Security(08)——intercept-url配置

intercept-url配置 目录 1.1     指定拦截的url 1.2     指定访问权限 1.3     指定访问协议 1.4     指定请求方法   1.1    指定拦...

8. Spring Security intercept-url配置

intercept-url配置 目录 1.1     指定拦截的url 1.2     指定访问权限 1.3     指定访问协议 1.4     指定请求方法   1.1    指定拦...

关于spring security权限控制

spring-security.xml 文件: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xmlns:sec...

spring security 登录、权限管理配置

登录流程 1)容器启动(MySecurityMetadataSource:loadResourceDefine加载系统资源与权限列表)  2)用户发出请求  3)过滤器拦截(MySecurityF...
  • rongku
  • rongku
  • 2016年04月24日 22:50
  • 7306

spring3.0 MVC初步4-spring security REST

一、SpEl表达式 1、配置事务时用过一个AspectJ’s pointcut expression language:         pointcut="execution(* *..IU...
  • concen
  • concen
  • 2012年11月21日 13:29
  • 5143

一个Filter配置多个url-pattern

最近做项目遇到一个Filter需要配置多个url-pattern,上网查了下资料,经测试,现总结下  一、完全错误的方式  Java代码        author...

Spring Security 自定义登录验证与自定义回调地址

1 配置文件 security-ns.xml

Eclipse无法自动编译出class文件

今天调试的时候发现问题:调试的时候竟然在我注释的里面走,当时那个郁闷啊,每次都要clean下才可以,晚上感觉不对劲,上网查了查,原来是bulid automatically这个我把勾去掉了,下面是原文...

利用jQuery UI为CMS网站实现拖拽布局效果,秒杀table布局

其实table和div这两种布局方式是互为优劣的。但是目前来说div越来越成为一种主流设计方式,其布局效果灵活、样式新颖的特点也越来越受到青睐。而且这里我们所讲的,如果你想使用拖拽的方式轻松实现页面布...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring security 配置 intercept-url 时需要注意的几个问题
举报原因:
原因补充:

(最多只允许输入30个字)