Spring Security --- authorizeRequests配置

目录

自定义配置类之访问权限

匹配顺序规则

访问控制包含

访问控制url匹配

访问控制方法

角色、权限判断

使用注解进行角色权限控制


  • 自定义配置类之访问权限

  • http.authorizeRequests()主要是对url进行访问权限控制
  • 通过这个方法来实现url授权操作
  • 支持链式写法

  • 匹配顺序规则

  • 在所有匹配规则中取所有规则的交集
  • 配置顺序影响了之后授权效果
  • 越是具体的应该放在前面,越是笼统的应该放到后面
  • 访问控制包含

    • 访问控制url匹配
    • 访问控制方法
    • 角色判断
    • 权限判断
  • 访问控制url匹配

  • anyRequest()
  • 表示匹配所有的url请求

  • antMatcher(String regx)
  • 传递一个ant表达式参数,表示匹配所有满足ant表达式的请求
  • ant表达式中特殊字符解释
  • antMatcher(HttpMethod.*, String regx)
  • 传递一个请求方法类型参数加ant表达式参数,表示匹配所有满足ant表达式的指定请求方式的url
  • regexMatchers(String regexPattern)
  • 传递一个参数使用正则表达式进行匹配
  • 和antMatchers()主要的区别就是参数,antMatchers()参数是ant表达式,而regexMatchers()参数是正则表达式
  • 演示案例: 使用正则表达式放行一个名称以demo结尾的js文件,让用户可以匿名访问

  • regexMatchers(HttpMethod.*, String regexPattern)
  • 演示案例: 使用正则表达式放行一个名称以demo结尾的js文件,让用户可以通过get请求匿名访问

  • 访问控制方法

  • 角色、权限判断

  • 预置了两个用户,给用户也设置了权限, 现在用这两个用户来演示一下角色和权限的访问控制

  • hasRole()
  • 演示案列: 具有admin权限的用户才可以访问role.html

  • hasAnyRole()

  • hasAuthority()

  • hasAnyAuthority()

  • access()
  • 上面实现的访问控制的方法都可以使用access()来代替,因为他们本质上都是调用了access()

  • 使用注解进行角色权限控制

  • 首先如果要启动spring security提供的角色权限注解的话,需要在配置类上添加@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)注解
  • 这样才能开启@Secured和@PreAuthorize注解

  • @Secured注解的使用

  • 判断是否具有角色权限,匹配的字符串需要添加前缀“ROLE_角色权限”
  • 作用:在用户向浏览器发送一个请求时会去访问控制器中的方法,然后在访问此控制器中的方法之前会先去UserDetailsService用户细节实现类的实现方法中return的User对象查看是否具有@Secured注解中指定的角色
  • 如果有指定的角色,那么系统允许用户访问此控制器方法,否则,系统不允许访问此控制器方法
  • @PreAuthorize注解的使用

  • 进入方法之前进行角色权限认证
  • 作用:在浏览器发送一个请求后,会访问控制器中的对应的方法,@PreAuthorize注解 会在访问控制器中的方法之前进行权限认证,看看UserDetailsService用户细节实现类中对应的用户有没有相应的权限,如果有那么该用户发送的请求可以进入控制器中对应的方法,如果没有相应的权限,那么用户发送的请求不能进去控制器中对应的方法;
  • @PostAuthorize注解的使用

  • 方法执行之后再判断用户的角色权限
  • 响应结果获取到"in",匹配,说明权限可以访问

  • 响应结果获取到"out",不匹配,说明权限不足, 抛出403异常

  • 作用:在访问控制器中的相关方法之后(方法的return先不访问),进行权限认证,去看看UserDetailsService用户细节实现类中用户是否有对应的权限,如果有的话,那么控制器方法的最后一句return语句会执行,否则,控制器方法的最后一句return语句不会执行;

猜你喜欢

转载自blog.csdn.net/weixin_59624686/article/details/130134928