Spring Security 简介
我们先简单了解一下,Spring Security
是什么。
Spring Security 是一个权限控制的框架,是 Spring 生态下的一个项目。
其提供的功能主要有:认证 ( Authentication )、授权 ( Authorization )。另外,它也自动帮我们抵御一些网络攻击。例如,CSRF 攻击等等。
-
认证
认证就是,识别用户是 “谁”。
-
授权
授权就是,是否允许用户进行操作。
Spring Security 底层是通过一系列过滤器实现的。客户端向应用程序发送请求,然后容器创建一个过滤器链,其中包含过滤器和Servlet。
以前 Spring Security 的配置,相当繁琐。光是配置xml,就够让人头秃的了。
依托于 Spring Boot ,现在 Spring Security 的配置项简化了很多。甚至最基础的使用只需要引入 jar 包就可以了。
Spring Boot 的 Security 自动配置:
- Spring Security 的默认配置,在 Servlet 过滤器中创建名为 springSecurityFilterChain 的 bean。这个 bean 负责应用程序内的所有安全验证(保护URL,验证用户名和密码,重定向到登录表单等)。
- 创建一个 UserDetailsService bean,其中包含用户名和一个随机生成的密码,密码打印到控制台。
- 针对每个请求,向 servlet 容器过滤器 注册 springSecurityFilterChain 。
自动配置当然满足不了我们的需求,最简单的,怎么着我们也得自己设置用户名和密码吧。
此时 Spring Boot 的便利性就体现一点了,在 yml 文件配置用户名和密码即可。
-
yml 相关配置
spring: application: name: user_center security: user: name: DaMai password: damai123456 复制代码
-
启动项目,访问个接口
例如访问:
127.0.0.1:3344/authRole/1
。Spring Security 就会拦截下来,然后跳转到内置的登陆页面。 -
输入配置的用户名和密码之后,就可以访问了。
当然,我们现在代码还没有整理,会报错。但是我们可以看到,这里是通过验证的,所以业务请求才被处理。
RBAC 权限设计思想
RBAC
是 Role-Based Access Control
的首字母,即基于角色的权限访问控制。目前这是用到最多的权限系统设计思想。
最简单的 RBAC 系统,是「用户-角色-权限」的授权模型,又被称为RBAC0
。在这种模型之中,用户与角色、角色与权限,一般是多对多的关系。
当然,在我们业务开发过程中,还是需要根据实际进行扩展。这仅仅作为一个指导思想。
总体流程就是,查询哪些角色可以访问该路径,然后再匹配用户时候拥有该角色。