目录
1.1 指定拦截的url
通过pattern指定当前intercept-url定义应当作用于哪些url。
<security:intercept-url pattern="/**" access="ROLE_USER"/>
1.2 指定访问权限
可以通过access属性来指定intercept-url对应URL访问所应当具有的权限。access的值是一个字符串,其可以直接是一个权限的定义,也可以是一个表达式。常用的类型有简单的角色名称定义,多个名称之间用逗号分隔,如:
<security:intercept-url pattern="/secure/**" access="ROLE_USER,ROLE_ADMIN"/>
在上述配置中就表示secure路径下的所有URL请求都应当具有ROLE_USER或ROLE_ADMIN权限。当access的值是以“ROLE_”开头的则将会交由RoleVoter进行处理。
此外,其还可以是一个表达式,上述配置如果使用表达式来表示的话则应该是如下这个样子。
<security:http use-expressions="true">
<security:form-login />
<security:logout />
<security:intercept-url pattern="/secure/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>
</security:http>
或者是使用hasRole()表达式,然后中间以or连接,如:
<security:intercept-url pattern="/secure/**" access="hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')"/>
需要注意的是使用表达式时需要指定http元素的use-expressions=”true”。更多关于使用表达式的内容将在后文介绍。当intercept-url的access属性使用表达式时默认将使用WebExpressionVoter进行处理。
此外,还可以指定三个比较特殊的属性值,默认情况下将使用AuthenticatedVoter来处理它们。IS_AUTHENTICATED_ANONYMOUSLY表示用户不需要登录就可以访问;IS_AUTHENTICATED_REMEMBERED表示用户需要是通过Remember-Me功能进行自动登录的才能访问;IS_AUTHENTICATED_FULLY表示用户的认证类型应该是除前两者以外的,也就是用户需要是通过登录入口进行登录认证的才能访问。如我们通常会将登录地址设置为IS_AUTHENTICATED_ANONYMOUSLY。
<security:http>
<security:form-login login-page="/login.jsp"/>
<!-- 登录页面可以匿名访问 -->
<security:intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<security:intercept-url pattern="/**" access="ROLE_USER"/>
</security:http>
1.3 指定访问协议
如果你的应用同时支持Http和Https访问,且要求某些URL只能通过Https访问,这个需求可以通过指定intercept-url的requires-channel属性来指定。requires-channel支持三个值:http、https和any。any表示http和https都可以访问。
<security:http auto-config="true">
<security:form-login/>
<!-- 只能通过https访问 -->
<security:intercept-url pattern="/admin/**" access="ROLE_ADMIN" requires-channel="https"/>
<!-- 只能通过http访问 -->
<security:intercept-url pattern="/**" access="ROLE_USER" requires-channel="http"/>
</security:http>
需要注意的是当试图使用http请求限制了只能通过https访问的资源时会自动跳转到对应的https通道重新请求。如果所使用的http或者https协议不是监听在标准的端口上(http默认是80,https默认是443),则需要我们通过port-mapping元素定义好它们的对应关系。
<security:http auto-config="true">
<security:form-login/>
<!-- 只能通过https访问 -->
<security:intercept-url pattern="/admin/**" access="ROLE_ADMIN" requires-channel="https"/>
<!-- 只能通过http访问 -->
<security:intercept-url pattern="/**" access="ROLE_USER" requires-channel="http"/>
<security:port-mappings>
<security:port-mapping http="8899" https="9988"/>
</security:port-mappings>
</security:http>
1.4 指定请求方法
通常我们都会要求某些URL只能通过POST请求,某些URL只能通过GET请求。这些限制Spring Security也已经为我们实现了,通过指定intercept-url的method属性可以限制当前intercept-url适用的请求方式,默认为所有的方式都可以。
<security:http auto-config="true">
<security:form-login/>
<!-- 只能通过POST访问 -->
<security:intercept-url pattern="/post/**" method="POST"/>
<!-- 只能通过GET访问 -->
<security:intercept-url pattern="/**" access="ROLE_USER" method="GET"/>
</security:http>
method的可选值有GET、POST、DELETE、PUT、HEAD、OPTIONS和TRACE。
(注:本文是基于Spring Security3.1.6所写)
(注:原创文章,转载请注明出处。原文地址:http://elim.iteye.com/blog/2161056)
相关推荐
<intercept-url> 元素 B.1.3.1. pattern B.1.3.2. method B.1.3.3. access B.1.3.4. requires-channel B.1.3.5. filters B.1.4. <port-mappings> 元素 B.1.5. <form-login> 元素 B.1.5.1. login-...
Spring Security 参考 1 第一部分前言 15 1.入门 16 2.介绍 17 2.1什么是Spring Security? 17 2.2历史 19 2.3版本编号 20 2.4获得Spring安全 21 2.4.1使用Maven 21 Maven仓库 21 ...<intercept-url...
<intercept-url>元素 B.1.3.1. pattern B.1.3.2. method B.1.3.3. access B.1.3.4. requires-channel B.1.3.5. filters B.1.4. <port-mappings>元素 B.1.5. <form-login>元素 B.1.5.1. login-page B.1.5.2...
<intercept-url> 元素 B.1.3.1. pattern B.1.3.2. method B.1.3.3. access B.1.3.4. requires-channel B.1.3.5. filters B.1.4. <port-mappings> 元素 B.1.5. <form-login> 元素 B.1.5.1. ...
拦截测试 拦截测试 Intercept test intercept test
拦截窗口Intercept blocker windowInterceptblocker window
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用
然后你可以调用: intercept-proxy myremote -h myremotesite.com -p 3000cd myremotenpm installnpm start...该站点将在并指向 myremotesite.com ##Usage 通过将代理服务器指向一个 url 并运行该应用程序,您可以...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
在Spring1.2或之前的版本中,实现AOP的传统方式就是通过实现Spring的AOP API来定义Advice,并设置代理对象。Spring根据Adivce加入到业务流程的时机的不同,提供了四种不同的Advice:Before Advice、After Advice、...
离线安装包,亲测可用
3、如果您的web项目有SpringSecurity,修改SpringSecurity资源过滤配置、不过滤/monitoring的访问 <intercept-url pattern="/monitoring" access="IS_AUTHENTICATED_ANONYMOUSLY" /> <!-- -------------------------...
语言:English ...有关此扩展程序支持的域的列表,请访问https://github.com/bjornstar/intercept-redirect对于Mozilla Firefox用户-https://intercept-redirect.firefox.bjornstar.com对于Mirosoft Edge用户- ...
网络封包截取器 功能和WSockExpert的一样,貌似更胜一层
使用wdio-intercept-service,您可以拦截由某些用户操作(例如,按下按钮等)发起的Ajax HTTP调用,并在以后对请求和相应的响应进行断言。 但是有一个陷阱:您不能拦截在页面加载时启动的HTTP调用(就像在大多数SPA...
仅选择您想要的URL的选项。 是否要阻止弹出窗口在单独的窗口中加载,而是加载到主窗口中? 通过此扩展,您可以通过在设置中键入URL网址来有选择地选择将哪些弹出窗口加载到一个窗口中。 当看到带有该URL的弹出窗口时...
截取 受本地启发的本地提取命令的拦截器库。 fetch-intercept Monkey修补了全局fetch方法,并... register ( { request : function ( url , config ) { // Modify the url or config here return [ url , config ] ;
语言:English 拦截传出的Google搜索! 您是否曾经创建过无意的Google搜索? 这可能很难配置,但是如果您喜欢...如果配置正确,它可以使您有机会查看在URL栏中输入的所有内容,然后再将其发送到任何搜索引擎或网站URL。