『Spring Security』(一) 概述

Spring Security 简介

我们先简单了解一下,Spring Security是什么。

Spring Security 是一个权限控制的框架,是 Spring 生态下的一个项目。

其提供的功能主要有:认证 ( Authentication )、授权 ( Authorization )。另外,它也自动帮我们抵御一些网络攻击。例如,CSRF 攻击等等。

  • 认证

    认证就是,识别用户是 “谁”。

  • 授权

    授权就是,是否允许用户进行操作。

Spring Security 底层是通过一系列过滤器实现的。客户端向应用程序发送请求,然后容器创建一个过滤器链,其中包含过滤器和Servlet。

image-20201103153237484

以前 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 文件配置用户名和密码即可。

  1. yml 相关配置

    spring:
      application:
        name: user_center
      security:
        user:
          name: DaMai
          password: damai123456
    复制代码
  2. 启动项目,访问个接口

    例如访问: 127.0.0.1:3344/authRole/1。Spring Security 就会拦截下来,然后跳转到内置的登陆页面。

    image-20201106163514767

  3. 输入配置的用户名和密码之后,就可以访问了。

    当然,我们现在代码还没有整理,会报错。但是我们可以看到,这里是通过验证的,所以业务请求才被处理。

    image-20201106163758673

RBAC 权限设计思想

RBACRole-Based Access Control 的首字母,即基于角色的权限访问控制。目前这是用到最多的权限系统设计思想。

最简单的 RBAC 系统,是「用户-角色-权限」的授权模型,又被称为RBAC0。在这种模型之中,用户与角色、角色与权限,一般是多对多的关系。

当然,在我们业务开发过程中,还是需要根据实际进行扩展。这仅仅作为一个指导思想。

总体流程就是,查询哪些角色可以访问该路径,然后再匹配用户时候拥有该角色。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享