SpringSecurity5(1-快速入门)
依赖
1 | <dependency> |
登录认证
1 |
|
注意:导入依赖之后,访问 localhost: 8080/test 请求地址会自动跳转到 localhost: 8080/test 中,出现一个表单,需要登录后才能访问
用户名默认为 user,密码在控制台出现
将表单请求转换为弹出框请求
WebSecurityConfigurerAdapter
1 | /** |
使用案例
- 创建配置类继承 WebSecurityConfigurerAdapter 类,实现 http 的 configure 方法
1 |
|
- 访问地址:localhost: 8080/test,此时发现表单请求转换为弹出框请求
@EnableWebSecurity
在非 Springboot 的 Spring Web MVC 应用中,该注解@EnableWebSecurity 需要开发人员自己引入以启用 Web 安全。
在基于 Springboot 的 Spring Web MVC 应用中,开发人员没有必要再次引用该注解,Springboot 的自动配置机制 WebSecurityEnablerConfiguration 已经引入了该注解
1 | // 省略 imports 行 |
路径匹配器
MvcRequestMatcher
匹配规则
- /a:仅匹配路径/a
- /a/*:操作符* 会替换一个路径名。在这种情况下,它将匹配/a/b 或/a/c,而不是/a/b/c
- /a/**:操作符** 会替换多个路径名。在这种情况下,/a 以及/a/b 和/a/b/c 都是这个表达式的匹配项
- /a/{param}:这个表达式适用于具有给定路径参数的路径/a
- /a/{param: regex}:只有当参数的值与给定正则表达式匹配时,此表达式才应用于具有给定路径参数的路径/a
使用案例
- 单个请求无请求方法匹配
1 | http.authorizeRequests() |
如果使用角色为“USER”的用户来访问“/hello_admin”端点,那么会出现禁止访问的情况,因为“/hello_admin”端点只有角色为“ADMIN”的用户才能访问
注意:没有被 MVC 匹配器所匹配的端点,其访问不受任何的限制,效果相当于如下所示的配置
1 | http.authorizeRequests() |
- 单个请求有请求方法匹配
如果一个 Controller 中存在两个路径完全一样的 HTTP 端点,可以把 HTTP 方法作为一个访问的维度进行控制
1 | http.authorizeRequests() |
- 多个路径匹配
1 | http.authorizeRequests() |
- 带有路径变量匹配
1 |
|
1 | http.authorizeRequests() |
此时调用端点,假设 code = 1234a,不符合全部都是数字,报 401;然后再次调用端点,code = 12345,发现调用通过
AntPathRequestMatcher
Ant 匹配器的表现形式和使用方法与前面介绍的 MVC 匹配器非常相似
使用方法:
- antMatchers(String patterns)
- antMatchers(HttpMethod method)
- antMatchers(HttpMethod method, String patterns)
mvc 与 ant 匹配器的区别
- antMatchers(“/secured”)仅仅匹配 /secured
- mvcMatchers(“/secured”)匹配 /secured 之余还匹配 /secured/,/secured.html,/secured.xyz
因此 mvcMatcher 更加通用且容错性更高
RegexRequestMatcher
使用方法:
- regexMatchers(HttpMethod method, String regex)
- regexMatchers(String regex)
使用这一匹配器的主要优势在于它能够基于复杂的正则表达式对请求地址进行匹配,这是 MVC 匹配器和 Ant 匹配器无法实现的
1 | http.authorizeRequests() |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 爱编程的小生!
评论