在本教程中,我们将 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.
org.springframework.boot spring-boot-starter-security
我们将用于示例的另一个依赖项是spring-boot-starter-web.
2.1 第 2 步:创建 REST APIorg.springframework.boot spring-boot-starter-web
我们将创建一个简单的 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!
4. 多个请求如何在没有凭据的情况下工作?登录并刷新页面后,将不会再次要求您提供凭据。您无需通过登录页面即可访问 REST 端点。
如前所述,一旦您提供了凭据,您就无需在同一会话中再次提供凭据。这是一个cookie的原因JSESSIONID。请求的JSESSIONID值相同。此 cookie 用于确定是否同一个人正在尝试访问端点。如果您尝试更改该值并再次尝试访问 REST 端点,您将收到错误消息。
5.更改默认用户名和密码您可以使用spring.security.user.name和spring.security.user.password属性来定义登录用户名和密码。
spring.security.user.name=admin spring.security.user.password=root6. 结论
在本快速教程中,我们将 Spring Security 与 Spring Boot 集成,并使用默认 Spring Boot 保护 REST API。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)