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

简介: intercept-url配置 目录 1.1     指定拦截的url 1.2     指定访问权限 1.3     指定访问协议 1.4     指定请求方法   1.1    指定拦截的url        通过pattern指定当前intercept-url定义应当作用于哪些url。

intercept-url配置

目录

1.1     指定拦截的url

1.2     指定访问权限

1.3     指定访问协议

1.4     指定请求方法

 

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_USERROLE_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-urlaccess属性使用表达式时默认将使用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     指定访问协议

       如果你的应用同时支持HttpHttps访问,且要求某些URL只能通过Https访问,这个需求可以通过指定intercept-urlrequires-channel属性来指定。requires-channel支持三个值:httphttpsanyany表示httphttps都可以访问。

   <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默认是80https默认是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-urlmethod属性可以限制当前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的可选值有GETPOSTDELETEPUTHEADOPTIONSTRACE

 

(注:本文是基于Spring Security3.1.6所写)

(注:原创文章,转载请注明出处。原文地址:http://elim.iteye.com/blog/2161056

 

 

目录
相关文章
|
19天前
|
JSON 安全 Java
什么是JWT?如何使用Spring Boot Security实现它?
什么是JWT?如何使用Spring Boot Security实现它?
70 5
|
1月前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
50 0
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
58 4
|
2月前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
43 0
|
3天前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
41 14
|
1天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
15 6
|
3天前
|
XML Java 数据格式
🌱 深入Spring的心脏:Bean配置的艺术与实践 🌟
本文深入探讨了Spring框架中Bean配置的奥秘,从基本概念到XML配置文件的使用,再到静态工厂方式实例化Bean的详细步骤,通过实际代码示例帮助读者更好地理解和应用Spring的Bean配置。希望对你的Spring开发之旅有所助益。
28 3
|
2月前
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。
|
1月前
|
Java Spring
[Spring]aop的配置与使用
本文介绍了AOP(面向切面编程)的基本概念和核心思想。AOP是Spring框架的核心功能之一,通过动态代理在不修改原代码的情况下注入新功能。文章详细解释了连接点、切入点、通知、切面等关键概念,并列举了前置通知、后置通知、最终通知、异常通知和环绕通知五种通知类型。
37 1
|
3月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
246 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
下一篇
DataWorks