前言:

尚硅谷教程

前置知识

image.png
image.png

  • 基于spring框架来的,一个spring安全框架

    特点:

    image.png

  • 模块:

image.png

入门案例:

image.png

  • 第一步:创建一个springboot项目
  • 第二步:导入依赖:1.springboot-starter-web、2.springboot-starter-security

    1. <!--添加SpringSecurity的依赖-->
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-starter-security</artifactId>
    5. </dependency>
    6. <dependency>
    7. <groupId>org.springframework.boot</groupId>
    8. <artifactId>spring-boot-starter-web</artifactId>
    9. </dependency>
  • 第三步:编写一个controller测试

    @RestController
    @RequestMapping("/test")
    public class TestController {
    
      @GetMapping("hello")
      public String Test(){
          return "Hello SpringScurity";
      }
    }
    
  • 测试:

image.png

  • 输入账号:user
  • 密码:

image.png
编写入门案例成功

SpringSecurity的基本原理

image.png
image.png

  • 注意:这里是看得jdk的源码实现的,可以在idea搜索快捷键(ctrl+shift+n)去查看源码
    web权限方案:
    image.png
    配置文件方式:
    image.png
    配置类方法:
    image.png
    image.png
    自定义编写实现类:
    image.png
    image.png
    查询数据库认证来完成用户登录image.png
    image.png
    image.png
    image.png
    遇到的问题:

why? 为什么我这entity的实体类的名字一定要跟数据库的表名一样,不可以自定义嘛?

自定义设置登录页面不需要认证可以访问

步骤:1
image.png
image.png

  • 2:编写controller请求

image.png
image.png
3:写前端页面form表单提交
image.png
测试
image.png
遇到的问题:
这个我在写controller 的时候把这个get写出了post,所有我测试的时候报错403请求方式不对,犯了一个低级错误。
image.png

基于角色或权限进行访问控制

image.png
image.png
步骤
1.添加2行权限的代码
image.png
业务的层权限的设置
image.png
测试:权限不对,报错
image.png
修改:
image.png
两个权限一直才能访问

效果:
image.png
遇到的问题:
这个hasAnyAuthority(“admins”)方法设置权限和

List<GrantedAuthority>  auths = AuthorityUtils
        .commaSeparatedStringToAuthorityList("admins");

一致才能访问页面嘛?
image.png

  • 第三种方法:hasRole方法

步骤1:

//3.hasRole方法 ROLE_sale
.antMatchers("/test/index").hasRole("sale")

步骤2:
List auths = AuthorityUtils .commaSeparatedStringToAuthorityList(“admins,ROLEsale”); 这里的前缀必须加个才可以找到,原因是底层是加了个ROLE
image.png
第四个方法:hasAnyRole
image.png

自定义的403权限页面

image.png
效果展示:
image.png

常用注解的使用

image.png
第二个注解:@PreAuthorize
image.png
第三个注解:@PostAuthorize
image.png
其他的注解不常用
image.png

用户注销

image.png
image.png

  • 1.在登录页面添加一个退出
  • 2.在配置类中添加退出映射
  • 3.测试

image.png

记住我

image.png

  • 1.创建表
  • 2.添加数据库的配置文件
  • 3.编写配置类
  • 4.修改安全配置类
  • 5.页面添加记住我复选框
  • 6.使用张三进行登录测试
  • 7.设置有效期

自动登录实现步骤:
image.png
image.png

CSRF理解(跨站请求伪造)

image.png

SpringSecurity微服务权限方案

image.png
image.png
表的创建
image.png

  • 1.权限管理数据模型
  • 2.案例涉及技术说明

image.png

案例项目

参考视频来源:b站

https://www.bilibili.com/video/BV15a411A7kP?p=25