• SpringSecurity详解


    一、Spring Security简介

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

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

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

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

    二、快速开始

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

    1.引入依赖

    1. <dependencies>
    2.        
    3.        <dependency>
    4.            <groupId>org.springframework.bootgroupId>
    5.            <artifactId>spring-boot-starter-securityartifactId>
    6.        dependency>
    7.        <dependency>
    8.            <groupId>org.springframework.securitygroupId>
    9.            <artifactId>spring-security-coreartifactId>
    10.            <version>5.2.6.RELEASEversion>
    11.        dependency>
    12.        
    13.        <dependency>
    14.            <groupId>mysqlgroupId>
    15.            <artifactId>mysql-connector-javaartifactId>
    16.            <scope>runtimescope>
    17.        dependency>
    18.        
    19.        <dependency>
    20.            <groupId>com.baomidougroupId>
    21.            <artifactId>mybatis-plus-boot-starterartifactId>
    22.            <version>3.4.2version>
    23.        dependency>
    24.        
    25.        <dependency>
    26.            <groupId>com.baomidougroupId>
    27.            <artifactId>mybatis-plus-generatorartifactId>
    28.            <version>3.3.2version>
    29.        dependency>
    30.        
    31.        <dependency>
    32.            <groupId>org.apache.velocitygroupId>
    33.            <artifactId>velocityartifactId>
    34.            <version>1.7version>
    35.        dependency>
    36.        
    37.        <dependency>
    38.            <groupId>org.springframework.bootgroupId>
    39.            <artifactId>spring-boot-configuration-processorartifactId>
    40.            <optional>trueoptional>
    41.        dependency>
    42.        
    43.        <dependency>
    44.            <groupId>com.baomidougroupId>
    45.            <artifactId>mybatis-plus-extensionartifactId>
    46.            <version>3.4.2version>
    47.        dependency>
    48.        <dependency>
    49.            <groupId>org.springframework.securitygroupId>
    50.            <artifactId>spring-security-testartifactId>
    51.            <scope>testscope>
    52.        dependency>
    53.        
    54.        <dependency>
    55.            <groupId>org.springframework.bootgroupId>
    56.            <artifactId>spring-boot-starter-thymeleafartifactId>
    57.        dependency>
    58.        <dependency>
    59.            <groupId>org.springframework.bootgroupId>
    60.            <artifactId>spring-boot-starter-webartifactId>
    61.        dependency>
    62.        <dependency>
    63.            <groupId>org.springframework.bootgroupId>
    64.            <artifactId>spring-boot-devtoolsartifactId>
    65.            <scope>runtimescope>
    66.            <optional>trueoptional>
    67.        dependency>
    68.        <dependency>
    69.            <groupId>org.springframework.bootgroupId>
    70.            <artifactId>spring-boot-configuration-processorartifactId>
    71.            <optional>trueoptional>
    72.        dependency>
    73.        <dependency>
    74.            <groupId>org.projectlombokgroupId>
    75.            <artifactId>lombokartifactId>
    76.            <version>1.18.20version>
    77.            <optional>trueoptional>
    78.        dependency>
    79.        <dependency>
    80.            <groupId>org.springframework.bootgroupId>
    81.            <artifactId>spring-boot-starter-testartifactId>
    82.            <scope>testscope>
    83.        dependency>
    84.    dependencies>

    在pom中新增了Spring Security的依赖

    1.        <dependency>
    2.            <groupId>org.springframework.bootgroupId>
    3.            <artifactId>spring-boot-starter-securityartifactId>
    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ÿ

  • 相关阅读:
    大型架构设计的演进之路
    jenkins打开html不显示样式问题(包含mac安装启动jenkins)
    led台灯哪个牌子质量好?2022最新的台灯牌子排名
    【机器学习】带你轻松理解什么是强化学习中的状态动作函数 ?
    基于springboot实现教师人事档案管理系统项目【项目源码+论文说明】计算机毕业设计
    深入理解 Happens-Before 原则
    Visual Studio上一些Error的解决方案
    leetcode 145.二叉树的后序遍历
    基于Matlab求解高教社杯全国大学生数学建模竞赛(CUMCM2004A题)-奥运会临时超市网点设计(附上源码+数据)
    数据结构之实现队列
  • 原文地址:https://blog.csdn.net/m0_71012114/article/details/127416038