初识 Spring Security

背景:

        Spring Security 的前身是 Acegi Security,在被收纳为 Spring 子项目后正式更名为 Spring Security。截止到目前位置,Spring Security 已经升级到 5.3.9 版本,不仅新增了原生 OAuth 框架,还支持更加现代化的密码加密方式。

maven 依赖:

        完整的 pom.xml 的内容如下所示,需要注意的是,我们 Spring Boot 使用的版本是 1.5.10 。它对应的 Spring Security 的版本为 4.2.4.RELEASE

    <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.10.RELEASE</version>
	</parent>
	<properties>
		<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-config</artifactId>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

添加启动类:

        还需要新建一个启动类 SpringDemoApplication ,代码内容如下所示:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class SpringDemoApplication {

	@GetMapping("/")
	public String hello() {
		return "hello spring security";
	}
	
	public static void main(String[] args) {
		SpringApplication.run(SpringDemoApplication.class,args);
	}
}

项目目录:

        项目结构如下图所示:

测试:

        启动工程,在浏览器输入 http://localhost:8080,浏览器将弹出一个需要进行身份验证的对话框,如下图所示:

        在引入 Spring Security 项目之后,虽然没有进行任何相关的配置或编码,但 Spring Security 有一个默认的运行状态,要求在经过 HTTP 基本认证后才能访问对应的 URL 资源,其默认使用的用户名为 user, 密码则是动态生成并打印到控制台的一串随机码。翻看控制台的打印信息,如下图所示:

        输入用户名和密码后,点击 “ 登录 ” 按钮即可成功跳转,如下图所示:

        当然,在 HTTP 基本认证中,用户名和密码都是可以配置的,最常见的就是在 resources 下的配置文件中修改,如下图所示:

        重新启动程序,发现控制台不再打印默认密码串了,此时使用我们自定义的用户名和密码即可登录。

        事实上,绝大部分 Web 应用都不会选择 HTTP 基本认证这种认证方式,除安全性差、无法携带 cookie 等因素外,灵活性不足也是它的一个主要缺点。通常大家更愿意选择表单认证,自己实现表单登录页和验证逻辑,从而提高安全性。

猜你喜欢

转载自blog.csdn.net/xhf852963/article/details/121907962