阿尔法色色之屋 - Spring
type: channel
link: https://www.alphah.top/index.php/tag/Spring/
items: 【Spring】Spring Security 入门原理及实战

【Spring】Spring Security 入门原理及实战
type: item
date: 2023-03-09T10:40:00+08:00
description: 1. 基础概述Spring Security 是 Spring 项目之中的一个安全模块，可以非常方便与spring项目无缝集成。在 Spring Boot 项目中 Spring Security 的集成也十分方便。本文主要介绍 Spring Security，以及其在 Web 应用中的使用。2. 快速入门2.1 创建项目现在我们创建一个基本的 SpringBoot 的 Web 应用项目，首先引入依赖：<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> </dependencies>然后创建启动类 SpringSecurityApplication：@SpringBootApplication public class SpringSecurityApplication { public static void main(String[] args) { SpringApplication.run(SpringSecurityApplication.class, args); } }然后在项目目录中新建包Controller用于表示控制层，在里面新建类AppController并编写代码:@RestController public class AppController { @RequestMapping("/hello") String home() { return "Hello,Spring Security!"; } }这时候我们启动项目，并访问http://localohost:8080/hello在页面中看到：Hello,Spring Security!2.2 加入依赖这个时候我们给 SpringBoot 项目添加 SpringScurity 依赖，在pom.xml的<dependencies>标签中添加如下依赖：<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency>此时我们再一次访问http://localhost:8080/hello就会跳转到 Spring Security 的登录界面：说明 Spring Security 已经起作用了，但我们需要登陆才能继续访问。我们可以查看下这个页面的源代码，是这样： Please sign in Username Password Sign in 上面的div容器中包含了一个form，表单提交了三个数据：username【用户名】、 password【密码】、_csrf【CSRF安全防护相关】。Spring Security 默认的用户名是user，而默认密码则会在添加了 Spring Security 依赖后的项目启动时会随机生成。我们可以去控制台看下日志，会看到如下信息：在输入用户名和密码后成功登录，并能访问http://localhost:8080/hello的内容。2.2 自定义配置上面演示了默认情况下登录 Spring Security 的系统。如果我们想用自己的定义的账号密码，则需要改配置。我们新建包Config并在其中创建类MySecurityConfiguration，并添加如下代码：@Configuration @EnableWebSecurity public class MySecurityConfiguration extends WebSecurityConfigurerAdapter …