1. 简介
在本教程中,我们将 Spring Security 与 Spring Boot 集成。我们将看到如何在 Spring Boot 应用程序中使用 Spring Security 保护 REST API。在本教程中,我们将使用 Spring Boot 创建一个简单的 REST API 并对其进行保护。您可以说本教程是实际开始使用 Spring Security 的第一步。我们不会使用任何数据库来保存用户名和密码。我们还将了解当有人尝试访问资源时如何获取登录页面。我们将使用 Spring Security 提供的默认用户名、密码和登录页面。
2. 第一步:在 Spring Boot 中获取 Spring Security
要在 Maven 项目中的 Spring Boot 应用程序中获取 Spring Security,spring-boot-starter-security
请在pom.xml
.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
我们将用于示例的另一个依赖项是spring-boot-starter-web
.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.1 第 2 步:创建 REST API
我们将创建一个简单的 REST API,它返回一个简单的字符串消息。
package com.learnitweb.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@GetMapping("/hello")
public String index() {
return "Hello world from Spring Boot!";
}
}
2.3 第 3 步:运行应用程序
除了包含 Spring 启动器依赖项之外,您无需做任何其他事情来保护您的 REST 端点。在浏览器中访问端点http://localhost:8080/hello
后,您将看到如下内容:
注意:Spring Security 登录页面的默认用户名是user,密码是在控制台打印的生成的安全密码。
Using generated security password: 59035b7c-e488-4ff4-9a17-75a56a3a1d2f
提供用户名和密码,您将在浏览器中看到以下消息:
Hello world from Spring Boot!
登录并刷新页面后,将不会再次要求您提供凭据。您无需通过登录页面即可访问 REST 端点。
4. 多个请求如何在没有凭据的情况下工作?
如前所述,一旦您提供了凭据,您就无需在同一会话中再次提供凭据。这是一个cookie的原因JSESSIONID
。请求的JSESSIONID
值相同。此 cookie 用于确定是否同一个人正在尝试访问端点。如果您尝试更改该值并再次尝试访问 REST 端点,您将收到错误消息。
5.更改默认用户名和密码
您可以使用spring.security.user.name
和spring.security.user.password
属性来定义登录用户名和密码。
spring.security.user.name=admin
spring.security.user.password=root
6. 结论
在本快速教程中,我们将 Spring Security 与 Spring Boot 集成,并使用默认 Spring Boot 保护 REST API。