http.authorizeRequests()详解

文章详细介绍了SpringSecurity中用于URL匹配和权限控制的方法,包括anyRequest(),antMatcher(),regexMatchers()等,以及各种权限控制方法如permitAll(),authenticated(),hasRole()等,提供了代码示例来说明如何实现不同场景的访问控制。
摘要由CSDN通过智能技术生成

它遵循下面的链式写法

http.authorizeRequests() .url匹配规则1.权限控制方法1 .url匹配规则2.权限控制方法2..

下面分别讲一下url匹配规则都有哪些,权限控制方法都有哪些。

url匹配规则都有哪些:

  • anyRequest():
    表示匹配所有的url请求,配置类代码示例:
http.authorizeRequests()
        // 匹配所有的请求,并且所有请求都需要登录认证
        .anyRequest().authenticated();
  • antMatcher(String regx):antMatcher(String regx),传递一个ant表达式参数,表示匹配所有满足ant表达式的请求。
  • ant表达式中特殊字符解释
    ?匹配一个字符
    * 匹配0个或多个字符
    ** 匹配0个或多个目录
    配置类代码示例:
http.authorizeRequests()
        // 允许登录页面匿名访问
        .antMatchers("/showLogin", "/errPage").anonymous()
        // 所有的静态资源允许匿名访问
        .antMatchers(
                "/css/**",
                "/js/**",
                "/images/**",
                "/fonts/**",
                "/favicon.ico"
                ).anonymous()
        // 其他所有的请求都需要登录认证
        .anyRequest().authenticated();

  • antMatcher(HttpMethod.*, String regx),传递一个请求方法类型参数加ant表达式参数,表示匹配所有满足ant表达式的指定请求方式的url
    在这里插入图片描述
  • regexMatchers(String regexPattern):使用正则表达式进行匹配。和antMatchers()主要的区别就是参数,antMatchers()参数是ant表达式,而regexMatchers()参数是正则表达式。
    演示案例: 使用正则表达式放行一个名称以demo结尾的js文件,让用户可以匿名访问
http.authorizeRequests()
// 匹配所有名称以demo结尾的js并允许匿名访问
.regexMatchers(.+demo[.]js”).anonymous();
  • regexMatchers(HttpMethod.*, String regexPattern) 传递两个参数
    演示案例: 使用正则表达式放行一个名称以demo结尾的js文件,让用户可以通过get请求匿名访问
http.authorizeRequests()
    // 匹配所有名称以demo结尾的js并允许匿名GET请求访问
    .regexMatchers(HttpMethod.GET, ".+demo[.]js").anonymous();

权限控制方法

  • permitAll()
    表示所匹配的URL任何人都允许访问

  • anonymous()
    表示可以匿名访问匹配的URL。和permitAll()效果类似,只是设置为anonymous()的url会执行filterChain中的filter

  • denyAll()
    表示所匹配的URL都不允许被访问。

  • authenticated()
    表示所匹配的URL都需要被认证才能访问

  • rememberMe()
    允许通过remember-me登录的用户访问

  • access()
    SpringEl表达式结果为true时可以访问

  • fullyAuthenticated()
    用户完全认证可以访问(非remember-me下自动登录)

  • hasRole()
    如果有参数,参数表示角色,则其角色可以访问

  • hasAnyRole()
    如果有参数,参数表示角色,则其中任何一个角色可以访问

  • hasAuthority()
    如果有参数,参数表示权限,则其权限可以访问

  • hasAnyAuthority()
    如果有参数,参数表示权限,则其中任何一个权限可以访问

  • hasIpAddress()
    如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问

访问控制方法都很简单, 只要匹配到url后直接在后面追加调用这个方法就行了,链式调用特别简单,不演示了。

转载声明

  • 上述基础引用自:https://blog.csdn.net/m0_67390963/article/details/125244569
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值