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 协议进行通信以确保安全性。