它遵循下面的链式写法
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