Spring Security简介入门案例

news/2024/7/3 8:43:45

Spring Security官方文档:https://spring.io/projects/spring-security#learn

一、Spring Securit简介

Spring Security 是一个安全框架,前身是 Acegi Security,它提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。

Spring Security 采用 IoC 和 AOP思想,基于 Servlet 过滤器实现的安全框架、为 Web 请求和方法调用提供身份确认和授权处理,还提供与其他库的集成以简化其使用,避免了代码耦合,减少了大量重复代码工作。

Spring Security 最最核心的功能就是两方面:

  • 认证 Authentication
  • 授权 Access Control

1、认证

用户认证就是判断一个用户的身份是否合法的过程,用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。

常见的用户身份认证方式有:

  • 用户名密码登录
  • 二维码登录
  • 手机短信登录
  • 指纹认证等方式。

系统为什么要认证?
认证是为了保护系统的隐私数据与资源,用户的身份合法方可访问该系统的资源。

Spring Security 为身份验证提供了全面的支持。一旦执行身份验证通过之后,我们就知道用户身份并可以执行授权。
Spring Security 支持多种不同的认证方式,比如:

  • 单点登录。
  • 记住我登录(允许一些非敏感操作)。
  • 匿名登录。
  • 第三方登录
  • 也可以自定义认证逻辑等

2、授权

授权是用户认证通过后,根据用户的权限来控制用户访问资源的过程,拥有资源的访问权限则正常访问,没有权限则拒绝访问。
Spring Security 支持基于 URL 的请求授权、支持方法访问授权以及对象访问授权等。

为什么要授权?

  • 认证是为了保证用户身份的合法性;
  • 授权则是为了更细粒度的对隐私数据进行划分,授权是在认证通过之后发生的,控制不同的用户能够访问不同的资源。

二、入门案例

1、测试项目

新建一个 Spring Boot 项目,引入 Spring Security 依赖和 web 依赖。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

1)编写 controller测试接口

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello(){
        return "hello";
    }
}

接下来什么事情都不用做,yml配置文件自定义端口为9090。
然后启动项目访问 测试接口,此时自动重定向到登录页面。
在这里插入图片描述
在启动过程中,我们会在控制台看到如下一行日志:

Using generated security password: 89e2fbee-9545-4812-affc-c2aeaed3d672

这就是 Spring Security 为默认用户 user 生成的临时密码,是一个 UUID 字符串。

2)输入user,和控制台生成的登录密码,登录后访问到测试接口。
在这里插入图片描述

2、 默认登录用户信息

在 Spring Security 中,默认的登录页面和登录接口,都是 /login ,只不过一个是 get 请求(登录页面),另一个是 post 请求(登录接口)。

默认的用户信息:

  • 默认的用户名:就是 user,
  • 默认的登录密码:就是项目启动时控制台打印出来的 UUID字符串,

为什么默认用户信息是它?
UserDetailsServiceAutoConfiguration类(用户相关的自动化配置类)的 getOrDeducePassword 方法中,可以发现:用户信息在SecurityProperties类中是写死的。

  • 默认的用户名就是 user,
  • 默认的密码则是 UUID,
  • 默认情况下,passwordGenerated 也为 true,即打印用户密码。

在这里插入图片描述

1.2 配置用户信息

通过配置文件或者配置类,在内存或者连接数据库中设置用户信息。
这里简单点,使用配置文件在 内存中设置用户信息。

在 application.yaml 配置文件中设置默认的用户名密码。

spring:
  security:
    user:
      name: admin
      password: admin123

SecurityProperties类查看用户信息,发现我们指定密码的同时还设置了 passwordGenerated 属性为 false,所以控制台不会打印的密码信息了。
在这里插入图片描述

– 求知若饥,虚心若愚。


http://www.niftyadmin.cn/n/2257470.html

相关文章

榆熙电商:商家们运营新店铺应该从哪些方面入手?

在拼多多开店有很多的类目给商家选择&#xff0c;商家们都根据自己的货源来选择店铺类型&#xff0c;那么拼多多开虚拟产品店铺需要哪些手续呢&#xff1f;开店要怎么运营呢&#xff1f;感兴趣的小伙伴一起和榆熙电商小编来了解一下吧。 一、在拼多多开虚拟店铺需要哪些手续&a…

Spring Security过滤器链加载执行流程源码分析

Spring Security实现原理 Spring Security 采用 IoC 和 AOP思想&#xff0c;基于 Servlet 过滤器实现的安全框架、为 Web 请求和方法调用提供身份确认和授权处理&#xff0c;还提供与其他库的集成以简化其使用&#xff0c;避免了代码耦合&#xff0c;减少了大量重复代码工作。 …

Spring Security使用数据库登录认证授权

一、搭建项目环境 1、创建 RBAC五张表 RBAC&#xff0c;即基于角色的权限访问控制&#xff08;Role-Based Access Control&#xff09;&#xff0c;就是用户通过角色与权限进行关联。 在这种模型中&#xff0c;用户与角色之间&#xff0c;角色与权限之间&#xff0c;一般者是…

榆熙电商:为什么说拼多多品牌内容营销迎来新的发展契机?

做拼多多电商的朋友都知道&#xff0c;开一家好店需要做推广&#xff0c;为店铺积累流量和口碑。现在拼多多上营销推广方式五花八门&#xff0c;拼多多商家如何找到适合自己的营销方式呢&#xff1f;内容制胜的运营思路是现阶段最常见的玩法&#xff0c;商家想要产品出圈&#…

Spring Security登录认证源码分析

Security是基于过滤器链实现认证授权的&#xff0c;它支持不同的认证机制&#xff0c;这里我们用户名密码认证机制。 Spring Security 提供了以下内置机制来从 读取用户名和密码&#xff1a; Form LoginBasic AuthenticationDigest Authentication 用户名密码存储机制&#…

成都榆熙:店铺流量受限主要原因有哪些?

店铺流量是商家们都很看重的东西&#xff0c;有的商家发现店铺出现了流量下降的情况&#xff0c;甚至是店铺出现了流量限制的情况&#xff0c;那么如果遇到这些情况&#xff0c;商家们该怎么面对呢&#xff1f;和成都榆熙小编一起来了解一下吧。 一、怎样预防店铺流量下降的情…

Lombok【汇总】

目录【官网】【使用篇】【注意事项】【Maven依赖】【SpringBoot】【常用注解】【推荐写法】【推荐好文】【官网】 https://github.com/rzwitserloot/lombok 【使用篇】 【注意事项】 在使用Lombok时&#xff0c;你的编辑器可能会报错&#xff0c;这时请在你的IDE中安装Lombo…

PDD商家如何提取热门关键词?

在拼多多平台新颖、独特的新型电商模式的吸引下&#xff0c;选择在拼多多开店的朋友越来越多了。面临不同于其他传统电商创业平台的特殊模式&#xff0c;难以借鉴其他平台运营思路&#xff0c;在拼多多开店的商家很容易陷入运营困境。今天成都榆熙小编就跟大家聊一聊拼多多新店…