点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!

来源 | juejin.im/post/5c6b6b126fb9a04a0c2f024f

1. 前言

我们经常在读到一些文章会遇到uri 支持 Ant 风格 ,而且这个东西在 Spring                    MVC 和 Spring Security 中经常被提及。这到底是什么呢?今天我们来学习了解一              下。这对我们学习 Spring MVC 和 Spring Security 十分必要。

2. Ant 风格

说白了 Ant 风格就是一种路径匹配表达式。主要用来对uri的匹配。其实跟正则表达         式作用是一样的,只不过正则表达式适用面更加宽泛,Ant仅仅用于路径匹配。

3. Ant 通配符

Ant 中的通配符有三种:

  • ? 匹配任何单字符

  • * 匹配0或者任意数量的 字符

  • ** 匹配0或者更多的 目录

    这里注意了单个* 是在一个目录内进行匹配。而** 是可以匹配多个目录,一定不要迷糊。

    3.1 Ant 通配符示例

    3.2 最长匹配原则

    从 3.1 可以看出 * 和 ** 是有冲突的情况存在的。为了解决这种冲突就规定了最长匹配原则(has more characters)。一旦一个uri 同时符合两个Ant匹配那么走匹配规则字符最多的。为什么走最长?因为字符越长信息越多就越具体。比如 /ant/a/path 同时满足 /**/path 和 /ant/*/path 那么走/ant/*/path

    4. Spring MVC 和 Spring Security 中的 Ant 风格

    接下来我们来看看 Spring MVC 和 Spring Security 下的 Ant风格。

    4.1 Spring MVC 中的 Ant 风格

    这里也提一下在 Spring MVC 中 我们在控制器中写如下接口:

        /**     * ant style test.     *     * @return the string     */    @GetMapping("/?ant")    public String ant() {
    
            return "ant";    }

    你使用任意合法uri字符替代? 发现都可以匹配,比如/bant 。还有Spring MVC 的一些 过滤器注册、格式化器注册都用到了 Ant 风格。

    4.2 Spring Security 中的 Ant 风格

    在 Spring Security 中 WebSecurityConfigurerAdapter 中的你可以通过如下配置进行路由权限访问控制:

    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Autowired    public void configureGlobal(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {        authenticationManagerBuilder.inMemoryAuthentication().withUser("admin").password("admin").roles("USER");    }
    
        @Override    protected void configure(HttpSecurity http) throws Exception {        http.authorizeRequests()                //放行静态资源 首页                .antMatchers("/index.html","/static/**").permitAll()                .anyRequest().authenticated();    }}

    上面 Spring Security 的配置中在 antMatchers 方法中通过 Ant 通配符来控制了资源的访问权限。后面我也会出相关的教程,敬请关注公众号:Felordcn 和个人博客:https://felord.cn

    5. 总结

    Ant 风格整体东西不多,也很好理解。很多关于uri 的配置、路由匹配、处理都用到了 Ant 风格 。对于 Web 开发人员来说是必须掌握的技能之一 。

本文通过OpenWrite的Markdown转换工具发布

关注我,回复“加群”加入各种主题讨论群

  • RESTful 架构基础

  • 17 个方面,综合对比四大消息中间件

  • 9 个爱不释手的 JSON 工具

  • 手把手教你定制标准 Spring Boot starter

  • 程序员接私活的10个平台和一些建议

朕已阅 

Spring Security 实战干货:路径Uri中的 Ant 风格相关推荐

  1. 路径 URI 中的 Ant 风格

    前言 我们经常在读到一些文章会遇到URI支持 Ant 风格 ,而且这个东西在 Spring MVC 和 Spring Security 中经常被提及.这到底是什么呢?今天我们来学习了解一下.这对我们学 ...

  2. Spring Security 实战干货: RBAC权限控制概念的理解

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 1 ...

  3. Spring Security 实战干货:玩转自定义登录

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 前面的关于 Spring Security  ...

  4. Spring Security 实战干货:自定义异常处理

    Spring Security 实战干货:自定义异常处理 转自:https://www.cnblogs.com/felordcn/p/12142514.html 文章目录 1. 前言 2. Sprin ...

  5. Spring Security 实战干货:OAuth2登录获取Token的核心逻辑

    作者 | 码农小胖哥 来源 | https://mp.weixin.qq.com/s/zdTBdSVunqwVGx-spHjLjw 1. 前言 在上一篇Spring Security 实战干货:OAu ...

  6. Spring Security 实战干货:OAuth2授权回调的核心认证流程

    1. 前言 我们在上一篇 Spring Security 实战干货:OAuth2 授权回调的处理机制 对 OAuth2 服务端调用客户端回调的流程进行了图解, 今天我们来深入了解 OAuth2 在回调 ...

  7. Spring Security 实战干货:客户端OAuth2授权请求的入口在哪里

    1. 前言 在Spring Security 实战干货:OAuth2 第三方授权初体验一文中我先对 OAuth2.0 涉及的一些常用概念进行介绍,然后直接通过一个 DEMO 来让大家切身感受了 OAu ...

  8. Spring Security 实战干货:实现自定义退出登录

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 上一篇对 Spring Security 所 ...

  9. Spring Security 实战干货:自定义配置类入口 WebSecurityConfigurerAdapter

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 今天我们要进一步的的学习如何自定义配置 Sp ...

最新文章

  1. 去掉chrome记住密码后自动填充表单的黄色背景
  2. 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
  3. sublime text 3设置快捷键让html文件在浏览器打开
  4. python numpy.linspace() 使用介绍
  5. Nacos配置管理-配置热更新
  6. [源码学习]调试Razor从哪里开始
  7. linux 未找到wifi适配器,无线 - 重新启动后找不到WI-FI适配器
  8. C#.net中什么类型能存放这种数组!
  9. 用这款免费工具,即可解决 90% 的报表设计难题
  10. 30 网站项目建设流程概述
  11. mybatis-plus配置日志
  12. 系统分析与设计(个人总结)
  13. 5个超厉害的资源搜索网站,每一款都可以让你的资源满满!
  14. 怎么让浏览器一直前置_上海居住证积分没有前置学历怎么解决?
  15. PATA1066题解
  16. Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控等!...
  17. [渝粤教育] 中国地质大学 人力资源开发与管理 复习题
  18. CodeForces - 727E Games on a CD 字符串Hash
  19. 书架bookshelf
  20. 图解 Panda3D引擎开发入门

热门文章

  1. python 获取 文件修改时间 距离 当前时间 天数 秒数
  2. golang 发送get和post示例
  3. pycharm 报错 out of memory 解决方法
  4. java 日志输出 log4j 简介
  5. linux 文件批量转utf8
  6. linux ptrace反调试之抢占ptrace
  7. Centos上安装EPEL
  8. API Monitor(API监控工具)
  9. MSSql存储过程高效应用
  10. C语言--对数组地址的解析