Spring Security 入门(1-3-2)Spring Security - http元素 - intercept-url配置
http元素下可以配置登录页面,也可以配置 url 拦截。
1、直接配置拦截url和对应的访问权限
<security:http use-expressions="false">
<security:form-login />
<security:logout />
<security:intercept-url pattern="/secure/**" access="ROLE_USER,ROLE_ADMIN"/>
</security:http>
其中,intercept-url配置通过 pattern属性 指定拦截的 url, 通过access属性指定url的访问权限
access 的值是一个字符串,其可以直接是一个权限的定义,也可以是一个表达式。多个角色名称之间用逗号分隔
2、使用表示式配置拦截url的访问权限
<security:http use-expressions="true">
<security:form-login />
<security:logout />
<security:intercept-url pattern="/secure/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>
</security:http>
<security:intercept-url pattern="/secure/**" access="hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')"/>
当 access 的值是以 “ROLE_” 开头的则将会交由 RoleVoter 进行处理。
需要注意的是使用表达式时需要指定 http 元素的 use-expressions=”true”。
当 intercept-url 的 access 属性使用表达式时默认将使用 WebExpressionVoter 进行处理。
此外,还可以指定三个比较特殊的属性值,默认情况下将使用 AuthenticatedVoter 来处理它们。
- IS_AUTHENTICATED_ANONYMOUSLY 表示用户不需要登录就可以访问;如通常会将登录地址设置为 IS_AUTHENTICATED_ANONYMOUSLY。
- IS_AUTHENTICATED_REMEMBERED 表示用户需要是通过 Remember-Me 功能进行自动登录的才能访问;
- IS_AUTHENTICATED_FULLY 表示用户的认证类型应该是除前两者以外的,也就是用户需要是通过登录入口进行登录认证的才能访问。
如:
<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>
3、指定访问协议http/https/any和端口
3.1、指定访问协议http/https/any
需求可以通过指定 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 通道重新请求。
3.2、指定协议的访问端口
如果所使用的 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>
3.3、指定请求方法
通常我们都会要求某些 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 Security 入门(1-3-2)Spring Security - http元素 - intercept-url配置的更多相关文章
- Spring Security 入门(1-6-1)Spring Security - 配置文件解析和访问请求处理
1.在pom.xml中添加maven坐标 <dependency> <groupId>org.springframework.security</groupId> ...
- Spring Security 入门(1-7)Spring Security - Session管理
参考链接:https://xueliang.org/article/detail/20170302232815082 session 管理 Spring Security 通过 http 元素下的子元 ...
- Spring Security 入门(1-3-5)Spring Security - remember me!
Remember-Me 功能 概述 Remember-Me 是指网站能够在 Session 之间记住登录用户的身份,具体来说就是我成功认证一次之后在一定的时间内我可以不用再输入用户名和密码进行登录了, ...
- Spring Security 入门(1-6-2)Spring Security - 内置的filter顺序、自定义filter、http元素和对应的filterChain
Spring Security 的底层是通过一系列的 Filter 来管理的,每个 Filter 都有其自身的功能,而且各个 Filter 在功能上还有关联关系,所以它们的顺序也是非常重要的. 1.S ...
- Spring Security 入门(1-4-2)Spring Security - 认证过程之AuthenticationProvider的扩展补充说明
1.用户信息从数据库获取 通常我们的用户信息都不会向第一节示例中那样简单的写在配置文件中,而是从其它存储位置获取,比如数据库.根据之前的介绍我们知道用户信息是通过 UserDetailsService ...
- Spring Security 入门(1-3-1)Spring Security - http元素 - 默认登录和登录定制
登录表单配置 - http 元素下的 form-login 元素是用来定义表单登录信息的.当我们什么属性都不指定的时候 Spring Security 会为我们生成一个默认的登录页面. 如果不想使用默 ...
- Spring Security 入门(1-2)Spring Security - 从 配置例子例子 开始我们的学习历程
1.Spring Security 的配置文件 我们需要为 Spring Security 专门建立一个 Spring 的配置文件,该文件就专门用来作为 Spring Security 的配置. &l ...
- Spring Security入门(2-3)Spring Security 的运行原理 4 - 自定义登录方法和页面
参考链接,多谢作者: http://blog.csdn.net/lee353086/article/details/52586916 http元素下的form-login元素是用来定义表单登录信息的. ...
- Spring Security 入门(3-11)Spring Security 的使用-自定义登录验证和回调地址
配置文件 security-ns.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmln ...
随机推荐
- 求数组中最小的k个数
题目:输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. package test; import java.util.Arra ...
- C++中 Rand随机序列函数
标准库<cstdlib>(被包含于<iostream>中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void): 从srand (seed ...
- WordPress给网站添加支付宝捐赠功能
最开始是在陌小雨的博客上看见这个功能,其实一般个人网站都会添加这个功能,下面我会讲解两种,不多说,上图: 1.添加到网页中任何位置: 上图这个功能可以添加到网页中的任何位置,可以在文章中添加,也可以利 ...
- 关于del命令
del命令用于删除具体的文件,但是删除文件的时候如果不指定文件的扩展名就会显示找不到文件 还有如果所要删除文件的文件名中含有空格的话该命令会自动识别为几个文件,就从空格处把文件 分成几份,然后就会显示 ...
- SpringtMVC运行流程:@RequestMapping 方法中的 Map、HttpServletRequest等参数信息是如何封装和传递的(源码理解)
在平时开发SpringtMVC程序时,在Controller的方法上,通常会传入如Map.HttpServletRequest类型的参数,并且可以方便地向里面添加数据.同时,在Jsp中还可以直接使用r ...
- 如何给自己的外包APP开发报价?
作者:CODING 兄弟,你看做这样一个软件需要多少钱?" 这估计是所有软件从业人员被问的最多也是最无奈的一个问题.这个问题等同于,"你看装修一个100平米的房子需要多少钱?&qu ...
- Codeforces Round #471 (Div. 2) C. Sad powers
首先可以前缀和 ans = solve(R) - solve(L-1) 对于solve(x) 1-x当中符合条件的数 分两种情况 3,5,7,9次方的数,注意这地方不能含有平方次 平方数 #inclu ...
- Tomcat下wtpwebapps文件夹 和 webapps文件夹区别
这两者其实没有区别.都是项目部署路径 webapps : tomcat默认部署路径 wtpwebapps : eclipse默认部署路径 只不过Tomcat6将wtpwebapps作为了默认路径,如果 ...
- Algorithm --> 顺序打印矩阵
顺序打印矩阵 思路 参考代码 #include <iostream> using namespace std; ], int row, int col) { || col < ) r ...
- python实现维吉利亚密码加密(Vigenère cipher)
最近有个朋友问我关于维吉利亚密码如何用python实现加密,研究之后发现这是个挺好玩的东西,遂决定写篇博文记录一下. 一.何谓维吉利亚密码 第一列是密钥字母列,第一行是明文字母行.不难看出维吉利亚密码 ...