Spring Security 入门案例
Spring Security 入门案例
1、创建工程
使用官方提供初始化 SpringBoot 项目在线工具 Spring Initializr ,配置参考:请点击此处超链接
1.1、坐标
implementation 'org.springframework.boot:spring-boot-starter-security:3.3.3'

主要包含以下几个子模块:
spring-security-core
: 核心包,包含核心认证和访问权限功能类和接口、远程支持和基本配置API
spring-security-web
:WEB
框架集成包,包含过滤器和相关的web
安全基础设施代码spring-security-config
:包含security
命名空间解析代码和Java
配置代码
2、代码
@SpringBootApplication
public class SpringSecurityDemo1 {
public static void main(String[] args) {
SpringApplication.run(SpringSecurityDemo1.class, args);
}
}
启动程序,UserDetailsServiceAutoConfiguration
自动配置类,会生成一个默认随机登录密码(因为目前没有配置用户,配置后不会生成):
如下所示:
Using generated security password: 057ad09f-2e3c-4432-ac12-8926a79cc00f
密码是 User
类的构造函数来初始化 User 对象默认创建而来,源码路径:org.springframework.boot.autoconfigure.security.SecurityProperties.User

前端
<html xmlns:th="https://www.thymeleaf.org">
<head>
<title>Hello Security!</title>
</head>
<body>
<h1>Hello Security</h1>
<a th:href="@{/logout}">Log Out</a>
</body>
</html>
@{/logout}的作用
通过使用@{/logout}
,Thymeleaf
将自动处理生成正确的 URL
,以适应当前的上下文路径。这样,无论应用程序部署在哪个上下文路径下,生成的URL都能正确地指向注销功能。
例如:如果我们在配置文件中添加如下内容
server.servlet.context-path=/demo
那么@{/logout}可以自动处理url为正确的相对路径
但是如果是普通的/logout,路径就会不正确
3、测试
@Controller
public class IndexController {
@GetMapping("/")
public String index() {
return "index";
}
}
http 请求
GET http://localhost:8080
访问测试接口,此时被重定向到默认登录页面:

用户名输入user
,密码输入控制台生成的随机登录密码,登录成功后重定向到访问接口:
Hello Security!
也可以在yml
中配置一个默认的登录用户及密码:
spring:
security:
user:
name: jin
password: jin