Spring Security 从入门到精通(一):基础概念与快速入门
SpringSecurity从入门到精通
学习参考视频链接
【SpringSecurity框架教程-Spring Security+JWT实现项目级前端分离认证授权-挑战黑马&尚硅谷】https://www.bilibili.com/video/BV1mm4y1X7Hc?vd_source=dcfc9dbffa81a6fce64aad9c9dabcc17
虽然版本过时了,但是基本的东西被这个博主讲的十分清晰,需要自己微调,不能照搬视频.
1.简介
Spring Security是一个Java框架,用于保护应用程序的安全性。它提供了一套全面的安全解决方案,包括身份验证、授权、防止攻击等功能。Spring Security基于过滤器链的概念,可以轻松地集成到任何基于Spring的应用程序中。它支持多种身份验证选项和授权策略,开发人员可以根据需要选择适合的方式。此外,Spring Security还提供了一些附加功能,如集成第三方身份验证提供商和单点登录,以及会话管理和密码编码等。总之,Spring Security是一个强大且易于使用的框架,可以帮助开发人员提高应用程序的安全性和可靠性。
一般Web应用的需要进行认证和授权。
认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户
授权:经过认证后判断当前用户是否有权限进行某个操作
而认证和授权也是SpringSecurity作为安全框架的核心功能
2.快速入门
你可以通过添加 spring-boot-starter-security 来为你的Spring Boot项目添加Spring Security。
- 添加依赖
<!--security依赖项目(重点)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 启动类
创建SpringBoot项目时自动创建好了 此处我做了更改只是为了后期Debug
@SpringBootApplication
public class SanGengSecurityApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(SanGengSecurityApplication.class, args);
System.out.println("args = " + args);
}
}
- 创建Controller
@RestController
@RequestMapping("/hello")
public class HelloController {
@GetMapping
public String hello(){
return "hello";
}
}
- 启动工程
你可以在 localhost:8080/ 访问该应用程序,这将使浏览器重定向到默认的登录页面。你可以提供 user 的默认用户名和随机生成的密码,这些密码会被记录到控制台中。然后浏览器会被带到最初请求的页面。
要注销,你可以访问 localhost:8080/logout,然后确认你想注销。

输入默认账号: user 密码在控制台打印了

登录进来
3.认证
3.1登录校验流程

3.2原理初探
SpringSecurity的原理其实就是一个过滤器链,内部包含了提供各种功能的过滤器。这里我们可以看看
入门案例中的过滤器。

图中只展示了核心过滤器,其它的非核心过滤器并没有在图中展示。
UsernamePasswordAuthenticationFilter:负责处理我们在登陆页面填写了用户名密码后的登陆请求。入门案例的认证工作主要有它负责。
ExceptionTranslationFilter:处理过滤器链中抛出的任何AccessDeniedException和AuthenticationException 。
FilterSecurityInterceptor:负责权限校验的过滤器。
我们可以通过Debug查看当前系统中SpringSecurity过滤器链中有哪些过滤器及它们的顺序。

输入 run.getBean(DefaultSecurityFilterChain.class) 求值

3.3认证详流程详解

概念速查:
Authentication接口: 它的实现类,表示当前访问系统的用户,封装了用户相关信息。
AuthenticationManager接口:定义了认证Authentication的方法
UserDetailsService接口:加载用户特定数据的核心接口。里面定义了一个根据用户名查询用户信息的
方法。
UserDetails接口:提供核心用户信息。通过UserDetailsService根据用户名获取处理的用户信息要封装
成UserDetails对象返回。然后将这些信息封装到Authentication对象中
更多推荐


所有评论(0)