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配置的更多相关文章

  1. Spring Security 入门(1-6-1)Spring Security - 配置文件解析和访问请求处理

    1.在pom.xml中添加maven坐标 <dependency> <groupId>org.springframework.security</groupId> ...

  2. Spring Security 入门(1-7)Spring Security - Session管理

    参考链接:https://xueliang.org/article/detail/20170302232815082 session 管理 Spring Security 通过 http 元素下的子元 ...

  3. Spring Security 入门(1-3-5)Spring Security - remember me!

    Remember-Me 功能 概述 Remember-Me 是指网站能够在 Session 之间记住登录用户的身份,具体来说就是我成功认证一次之后在一定的时间内我可以不用再输入用户名和密码进行登录了, ...

  4. Spring Security 入门(1-6-2)Spring Security - 内置的filter顺序、自定义filter、http元素和对应的filterChain

    Spring Security 的底层是通过一系列的 Filter 来管理的,每个 Filter 都有其自身的功能,而且各个 Filter 在功能上还有关联关系,所以它们的顺序也是非常重要的. 1.S ...

  5. Spring Security 入门(1-4-2)Spring Security - 认证过程之AuthenticationProvider的扩展补充说明

    1.用户信息从数据库获取 通常我们的用户信息都不会向第一节示例中那样简单的写在配置文件中,而是从其它存储位置获取,比如数据库.根据之前的介绍我们知道用户信息是通过 UserDetailsService ...

  6. Spring Security 入门(1-3-1)Spring Security - http元素 - 默认登录和登录定制

    登录表单配置 - http 元素下的 form-login 元素是用来定义表单登录信息的.当我们什么属性都不指定的时候 Spring Security 会为我们生成一个默认的登录页面. 如果不想使用默 ...

  7. Spring Security 入门(1-2)Spring Security - 从 配置例子例子 开始我们的学习历程

    1.Spring Security 的配置文件 我们需要为 Spring Security 专门建立一个 Spring 的配置文件,该文件就专门用来作为 Spring Security 的配置. &l ...

  8. Spring Security入门(2-3)Spring Security 的运行原理 4 - 自定义登录方法和页面

    参考链接,多谢作者: http://blog.csdn.net/lee353086/article/details/52586916 http元素下的form-login元素是用来定义表单登录信息的. ...

  9. Spring Security 入门(3-11)Spring Security 的使用-自定义登录验证和回调地址

    配置文件 security-ns.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmln ...

随机推荐

  1. 关于“应用程序无法启动,因为应用程序的并行配置不正确。请参阅应用程序事件日志,或使用命令行sxstrace.exe工具”问题的解决方法

    今天打开QQ管家加速版的时候突然出现了这个错误,百度了下说是系统缺少Microsoft Visual C++ 20XX(运行库),下载这个安装即可解决问题.

  2. java web 项目中获取当前路径的几种方法

    1.jsp中取得路径:   以工程名为TEST为例: (1)得到包含工程名的当前页面全路径:request.getRequestURI() 结果:/TEST/test.jsp (2)得到工程名:req ...

  3. poj-1008-玛雅历

    Description 上周末,M.A. Ya教授对古老的玛雅有了一个重大发现.从一个古老的节绳(玛雅人用于记事的工具)中,教授发现玛雅人使用了一个一年有365天的叫做Haab的历法.这个Haab历法 ...

  4. 【openvpn】转载:烂泥:ubuntu 14.04搭建OpenVPN服务器

    地址:http://www.cnblogs.com/ilanni/p/4681740.html (1)安装openVpn软件后.在openVpn的配置目录下添加配置文件: ca.crt  client ...

  5. linux --> Linux 的启动流程

    Linux 的启动流程 操作系统接管硬件以后发生的事情,也就是操作系统的启动流程. 因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多:但一旦进入操作系统,程序员几乎可以定制所有 ...

  6. logback读取src/test/resource下的配置文件

    import java.io.File; import java.net.URISyntaxException; import java.util.Map; import java.util.Prop ...

  7. Spring Cloud Consul 实现服务注册和发现

    Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为基于 JVM 的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布 ...

  8. linux scp 命令

    scp 命令 scp 命令 意思是 secure copy 即安全拷贝,可以把它看做是 cp 命令的高级版,可以跨主机拷贝. 经常用来在局域网内不同主机之间分享文件,或者在本机与远程主机中分享文件. ...

  9. centos 安装atom 笔记

    一.安装atom  "To install Atom on Linux, you can download a Debian package or RPM package either fr ...

  10. Sublime Text3下使用Python,REPL的安装与快捷键设置方法

    前提条件:连接外网   1.安装管理插件(CTRL+SHIFT+P),找到Package Control:install package一项,回车后继续选择SublimeREPL插件,进行安装:   ...