本文将带你使用 4行 代码 走进 Security 的大门 !
下一篇【Spring实战】11 Security 常用配置 文章,再去继续介绍 Spring Security 的几个常用配置。
Spring Security 是一个用于在 Java 应用程序中提供身份验证(Authentication)和授权(Authorization)功能的强大框架。它构建在 Spring 框架的基础之上,为开发者提供了一套完整的安全性解决方案,使得在应用程序中集成用户认证和授权变得更加简便和灵活。
官方网址
https://spring.io/projects/spring-security/
首先,需要在项目的 pom.xml
文件中引入 Spring Security 的依赖
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
就这么一个简简单单的引入依赖,Spring Security 就配置完成啦!
启动服务之前我们准备一个供浏览器访问的请求
UserController.java
@RestController
@RequestMapping("user")
public class UserController {
@GetMapping
public String hello() {
return "Hello";
}
}
创建一个正常的启动类,供启动 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);
}
}
启动我们刚刚准备好的 DemoApplication 服务
服务启动完成之后,可以看到控制台为我们生成了一串密码
Using generated security password: 7c94fc0d-70b7-46ce-a780-264a39562b89
访问刚刚准备好的如下请求看效果
http://localhost:8080/user
是不是很神奇,我们明明访问的 API,怎么就跳到了 login 画画,并且我们也没有画这么个画面呀!
我们尝试登陆一下,使用 Spring Security 默认的用户名是 user, 密码就是刚刚控制台生成的那一串字符串
输入完用户名和密码之后,点击 Sign in 按钮
此时,我们期待的 Hello 就又出现啦!恭喜你 Spring Security 已经学完啦_
※ 当然,这它的强大之处远远没有这么简单,哈哈。
身份验证(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 都可以提供一致的安全性解决方案。