目录
自定义配置类之访问权限
匹配顺序规则
访问控制包含
访问控制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语句不会执行;
 


















