目录
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)
相关推荐
在"SpringSecurity笔记2-SpringSecurity命名空间"这个主题中,我们将深入探讨SpringSecurity配置的核心——命名空间。 SpringSecurity通过XML配置文件中的命名空间来简化设置过程,这些命名空间提供了丰富的元素和...
### Spring Security 多登录页面配置详解 在许多大型企业级应用中,为了更好地实现权限管理和用户体验,往往会采用多个登录页面的方式来进行用户身份验证。这种方式能够有效地将不同类型的用户(如前台用户、后台...
在2.0.6.RELEASE版本中,开发者可以使用`<http>`、`<authentication>`和`<intercept-url>`等元素来定义安全策略。例如,设置登录页面、指定哪些URL需要保护、定义认证机制等。 四、认证流程 1. **匿名访问**:对于...
Spring Security的`@Secured`或`@PreAuthorize`注解可以用于方法级别的权限控制,而`<security:intercept-url>`元素则用于URL级别的访问控制。 7. **密码加密**: 为了安全,用户密码通常需要在存储前进行加密。...
在Spring Security框架中实现多个登录页面的配置是一项高级特性,主要应用于区分前端用户与后端管理员的不同登录需求。本文将详细介绍如何通过Spring Security配置多个登录页面,并为不同类型的用户设置不同的登录...
- **概念**:通过配置`intercept-url`来指定哪些URL需要进行拦截并执行相应的认证和授权策略。 - **指定拦截的URL**:指定哪些URL需要被拦截。 - **指定访问权限**:为特定URL设置访问所需的权限。 - **指定访问协议...
**Spring Security 3.1配置实例** Spring Security是一款强大的安全框架,用于保护基于Java的Web应用程序。在3.1版本中,它提供了丰富的功能来管理应用程序的安全性,包括URL访问控制、用户认证、授权以及方法级别...
例如,你可以使用 `<http>` 元素来配置URL过滤, `<intercept-url>` 用于指定URL模式的访问权限, `<form-login>` 和 `<logout>` 分别用于处理表单登录和登出。 在"springsecurity.rar"文件中,可能包含了Spring...
总结来说,Spring Security XML配置涉及到的主要知识点包括:`<http>`元素的设置、拦截URL的配置、`<authentication-manager>`和`<authentication-provider>`的使用、自定义登录表单的实现以及Spring MVC和Bootstrap...
这里,`auto-config="true"`会自动配置一些基本的安全过滤器,`<intercept-url>`定义了URL模式和相应的访问权限,`<form-login>`配置了登录页面和登录失败后的跳转,而`<logout>`则设置了注销功能。 接下来是`...
例如,使用 `http` 和 `intercept-url` 元素来指定哪些 URL 需要进行访问控制。 7. **集成 Spring MVC**:Spring Security 无缝集成到 Spring MVC 中,可以与 Spring 的其他模块如 Spring Data、Spring Boot 等协同...
- `<intercept-url>`定义了URL模式及其对应的访问权限。例如,`/index.jsp`和`/login.jsp`对所有用户开放,而`/afterLogin/**`只允许拥有`ROLE_USER`角色的用户访问。 - `<form-login>`元素定义了登录页面、登录失败...
在3.0.5.RELEASE中,可以使用`<http>`、`<authentication-manager>`和`<intercept-url>`等元素来配置安全行为。 5. **Remember Me服务**:此版本可能包含了Remember Me功能,允许用户在一段时间内无须重新登录。它...
- intercept-url标签的pattern属性允许配置具体的URL资源或使用通配符。 - access属性用来定义用户角色,如ROLE_ADMIN和ROLE_USER,控制对资源的访问权限。 #### 7. 权限控制机制 Spring Security提供了多种常用的...
例如,你可以使用`<intercept-url>`标签来指定哪些URL需要进行安全过滤。 2. **认证配置**:Spring Security 提供了多种认证方式,如基于内存的用户信息、JDBC认证、ldap认证等。通常,你需要配置`authentication-...
最后,为了使Spring Security能够处理GET请求的登录页面,你需要在`<http>`配置中添加一个`intercept-url`,允许未认证的用户访问这个页面: ```xml ... <intercept-url pattern="/login*" access="permitAll" />...
Spring Security 3 与 CAS 单点登录配置 Spring Security 3 是一个基于 Java 的安全框架,提供了灵活的身份验证、授权和访问控制功能。CAS(Central Authentication Service)是一种流行的单点登录协议,允许用户...