Spring Security入门5:创建首个HelloWorld项目
作者主页:Designer 小郑
作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,阿里云社区专家博主,蓝桥云课讲师。

一、创建新的 Spring Boot 项目
首先,请同学们在你本地的IDE中创建一个新的Maven项目,选择 Spring Initializr 作为项目的初始化方式。
在项目元数据中,选择你的项目坐标(Group/Artifact)、语言(Java/Kotlin/Scala等)和 SpringBoot 的版本。
添加所需的依赖项,至少包括 spring-boot-starter-web,它将提供用于创建 Web 应用程序的基本功能。
请同学们在本地项目中创建一个新的Java类,比如 HelloWorldController.java。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@GetMapping("/")
public String helloWorld() {
return "Hello World";
}
}
请同学们运行应用程序,同学们可以使用IDE中的运行按钮或者使用命令行运行 mvn spring-boot:run。
打开浏览器,访问 http://localhost:8080/,就看到 “Hello World” 的输出。
同学们创建了一个RestController类HelloWorldController,它映射到根路径/。
在 helloWorld() 方法中,我们返回字符串"Hello World",当同学们访问根路径时,SpringBoot会调用该方法并将字符串返回给浏览器。

二、引入 Spring Security 依赖
在 pom.xml 文件中,添加以下依赖可以引入Spring Security。
<dependencies>
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
这里使用 spring-boot-starter-security 作为 Spring Security 的依赖项,这个依赖项包含了 Spring Security 的核心库以及与Spring Boot集成所需的其他依赖项。
通过添加这个依赖项,同学们可以在项目中使用Spring Security的各种功能,例如身份验证、授权、安全过滤器等。

三、设计一个HelloController类和一个REST端点
我们首先创建一个 HelloController 类,它是一个带有一个 REST 端点的控制器。该端点使用 @GetMapping 注解进行映射到路径 /hello。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
接下来,我们需要进行 Spring Security 的配置。创建一个名为 SecurityConfig 的 Java 配置类,并继承 WebSecurityConfigurerAdapter 类。在
这个配置类中,我们可以定义安全规则、用户认证和授权等。
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
}
}
在 configure() 方法中,我们使用 HttpSecurity 对象定义了基本的安全规则,任何请求都需要进行身份验证(authenticated),同时支持表单登录和 HTTP 基本认证。
同学们可以根据自己的需求设置更复杂的安全规则、自定义认证逻辑等。

四、如何使用HTTP Basic 身份验证调用端点
使用HTTP Basic身份验证调用端点需要在请求头中提供正确的Authorization字段,该字段的值为"Basic"加上经过Base64编码的用户名和密码。
以下是使用curl命令进行HTTP Basic身份验证调用端点的示例,请同学们复制到本地执行。
curl -X GET \
-H "Authorization: Basic BASE64_ENCODED_USERNAME_AND_PASSWORD" \
https://api.csdn.net/endpoint
其中,BASE64_ENCODED_USERNAME_AND_PASSWORD 是经过 Base64 编码的用户名和密码的值,同学们可以在命令行中使用以下命令生成Base64编码的值。
echo -n "username:password" | base64
注意将 username:password 替换为实际的用户名和密码,生成的 Base64 编码值即可作为 Authorization 字段的值。
请确保在使用 HTTP Basic 身份验证时,同学们可以使用 HTTPS 协议进行通信以确保安全性。