本文将带你使用 4行 代码 走进 Security 的大门 !
下一篇【Spring实战】11 Security 常用配置 文章,再去继续介绍 Spring Security 的几个常用配置。
Spring Security 是一个用于在 Java 应用程序中提供身份验证(Authentication)和授权(Authorization)功能的强大框架。它构建在 Spring 框架的基础之上,为开发者提供了一套完整的安全性解决方案,使得在应用程序中集成用户认证和授权变得更加简便和灵活。
官方网址
https://spring.io/projects/spring-security/
1. 依赖
首先,需要在项目的 pom.xml
文件中引入 Spring Security 的依赖
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
就这么一个简简单单的引入依赖,Spring Security 就配置完成啦!
2. 创建一个请求
启动服务之前我们准备一个供浏览器访问的请求
UserController.java
@RestController
@RequestMapping("user")
public class UserController {
@GetMapping
public String hello() {
return "Hello";
}
}
3. 创建一个启动类
创建一个正常的启动类,供启动 Spring Boot 服务
DemoApplication.java
package com.cheney.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
4. 启动服务
启动我们刚刚准备好的 DemoApplication 服务
服务启动完成之后,可以看到控制台为我们生成了一串密码
Using generated security password: 7c94fc0d-70b7-46ce-a780-264a39562b89
5. 访问验证
访问刚刚准备好的如下请求看效果
http://localhost:8080/user
是不是很神奇,我们明明访问的 API,怎么就跳到了 login 画画,并且我们也没有画这么个画面呀!
6. 登录验证
我们尝试登陆一下,使用 Spring Security 默认的用户名是 user, 密码就是刚刚控制台生成的那一串字符串
输入完用户名和密码之后,点击 Sign in 按钮
此时,我们期待的 Hello 就又出现啦!恭喜你 Spring Security 已经学完啦_
※ 当然,这它的强大之处远远没有这么简单,哈哈。
7. 主要功能
-
身份验证(Authentication)
提供了多种身份验证机制,包括基于用户名和密码的认证、LDAP 认证、OAuth、OpenID 等。我们可以选择合适的身份验证方式来满足应用程序的需求
-
授权(Authorization)
支持基于角色和权限的授权机制。可以定义哪些用户拥有哪些角色和权限,以便在应用程序中进行细粒度的访问控制
-
表单登录和登录保持
提供了内置的表单登录和记住我功能,使得用户可以通过填写用户名和密码登录,并且可以选择在下一次访问时保持登录状态
-
注解和标签
支持在代码层面和页面层面使用注解和标签进行权限控制,使得权限配置更加灵活
-
CSRF 和 CORS 防护
内置了对跨站请求伪造和跨域资源共享的防护机制,增强应用程序的安全性
-
自定义过滤器和拦截器
允许开发者通过自定义过滤器和拦截器来扩展和定制安全性策略
-
集成第三方认证服务
支持集成第三方认证服务,例如使用社交媒体账号进行登录(OAuth、OpenID Connect)
-
Session 管理
提供了对会话管理的支持,包括会话超时、并发控制等
下一篇【Spring实战】11 Security 常用配置 文章,再去继续介绍 Spring Security 的几个常用配置。
总结
Spring Security 是一个 模块化的框架,它可以集成到任何基于 Spring 的应用程序中。无论是构建传统的基于服务器的 Web 应用、RESTful 服务,还是使用 Spring Boot 构建微服务,Spring Security 都可以提供一致的安全性解决方案。