当前位置:   article > 正文

SpringSecurity详解_spring security

spring security

一、Spring Security简介

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。Spring Security致力于为Java应用程序提供身份验证和授权的能力。像所有Spring项目一样,Spring Security的真正强大之处在于它可以轻松扩展以满足定制需求的能力。

Spring Security两大重要核心功能:用户认证(Authentication)用户授权(Authorization)

  • 用户认证:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。

  • 用户授权:验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,有的用户既能读取,又能修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。

二、快速开始

使用Springboot工程搭建Spring Security项目。

1.引入依赖

  1. <dependencies>
  2.        <!--————springSecurity的依赖————-->
  3.        <dependency>
  4.            <groupId>org.springframework.boot</groupId>
  5.            <artifactId>spring-boot-starter-security</artifactId>
  6.        </dependency>
  7.        <dependency>
  8.            <groupId>org.springframework.security</groupId>
  9.            <artifactId>spring-security-core</artifactId>
  10.            <version>5.2.6.RELEASE</version>
  11.        </dependency>
  12.        <!--————— MySql—————-->
  13.        <dependency>
  14.            <groupId>mysql</groupId>
  15.            <artifactId>mysql-connector-java</artifactId>
  16.            <scope>runtime</scope>
  17.        </dependency>
  18.        <!--————— mybatis-plus插件依赖 —————-->
  19.        <dependency>
  20.            <groupId>com.baomidou</groupId>
  21.            <artifactId>mybatis-plus-boot-starter</artifactId>
  22.            <version>3.4.2</version>
  23.        </dependency>
  24.        <!--————— mybatis-plus代码生产器 —————-->
  25.        <dependency>
  26.            <groupId>com.baomidou</groupId>
  27.            <artifactId>mybatis-plus-generator</artifactId>
  28.            <version>3.3.2</version>
  29.        </dependency>
  30.        <!--—————模板 代码生成器使用模板进行生产—————-->
  31.        <dependency>
  32.            <groupId>org.apache.velocity</groupId>
  33.            <artifactId>velocity</artifactId>
  34.            <version>1.7</version>
  35.        </dependency>
  36.        <!--—————配置类相关的依赖—————-->
  37.        <dependency>
  38.            <groupId>org.springframework.boot</groupId>
  39.            <artifactId>spring-boot-configuration-processor</artifactId>
  40.            <optional>true</optional>
  41.        </dependency>
  42.        <!--—————mybatis-plus 扩展插件 比如 分页插件依赖—————-->
  43.        <dependency>
  44.            <groupId>com.baomidou</groupId>
  45.            <artifactId>mybatis-plus-extension</artifactId>
  46.            <version>3.4.2</version>
  47.        </dependency>
  48.        <dependency>
  49.            <groupId>org.springframework.security</groupId>
  50.            <artifactId>spring-security-test</artifactId>
  51.            <scope>test</scope>
  52.        </dependency>
  53.        <!--————thymeleaf的依赖————-->
  54.        <dependency>
  55.            <groupId>org.springframework.boot</groupId>
  56.            <artifactId>spring-boot-starter-thymeleaf</artifactId>
  57.        </dependency>
  58.        <dependency>
  59.            <groupId>org.springframework.boot</groupId>
  60.            <artifactId>spring-boot-starter-web</artifactId>
  61.        </dependency>
  62.        <dependency>
  63.            <groupId>org.springframework.boot</groupId>
  64.            <artifactId>spring-boot-devtools</artifactId>
  65.            <scope>runtime</scope>
  66.            <optional>true</optional>
  67.        </dependency>
  68.        <dependency>
  69.            <groupId>org.springframework.boot</groupId>
  70.            <artifactId>spring-boot-configuration-processor</artifactId>
  71.            <optional>true</optional>
  72.        </dependency>
  73.        <dependency>
  74.            <groupId>org.projectlombok</groupId>
  75.            <artifactId>lombok</artifactId>
  76.            <version>1.18.20</version>
  77.            <optional>true</optional>
  78.        </dependency>
  79.        <dependency>
  80.            <groupId>org.springframework.boot</groupId>
  81.            <artifactId>spring-boot-starter-test</artifactId>
  82.            <scope>test</scope>
  83.        </dependency>
  84.    </dependencies>

在pom中新增了Spring Security的依赖

  1.        <dependency>
  2.            <groupId>org.springframework.boot</groupId>
  3.            <artifactId>spring-boot-starter-security</artifactId>
  4.        </dependency>

2.创建测试访问接口

用于访问接口时触发Spring Security登陆页面

  1. @RestController
  2. public class SecurityController {
  3.    @RequestMapping("/add")
  4.    public String add(){
  5.        return "hello security!";
  6.   }
  7. }

3.访问接口,自动跳转至Security登陆页面

通过浏览器输入框输入localhost:8080/add,将自动跳转至Security的登陆页面

默认账号是: user

默认密码是:启动项目的控制台中输出的密码

 三、原理剖析

在上面中访问add接口,发现被Spring Security的登陆页面拦截,可以猜到这是触发了Security框架的过滤器。Spring Security本质上就是一个过滤器链。下面讲介绍Security框架的过滤器链。

1.过滤器链

  • FilterSecurityInterceptorÿ

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/185305
推荐阅读
相关标签
  

闽ICP备14008679号