介绍
Spring Security 是一个强大且高度可定制的安全框架,专为保护基于 Java 的应用程序而设计,尤其是 Spring 应用。它提供了一系列功能,帮助开发者实现身份验证(Authentication)、授权(Authorization)、防止常见安全漏洞(如 CSRF 攻击、Session Fixation 等)以及加密等安全措施。
认证与授权
1、用户认证(Authentication):
验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。通俗点说就是系统认为用户是否能登陆。
2、用户授权(Authorization):
验证某个用户是否有权限执行某个操作。在一个系统中,不同用户说具有的权限是不同的。比如对一个文件夹来说,有的用户只能进行读取,有的用户可以进行修改。一般来说,系统不会为不同的用户分配不同的角色,二每个角色则对应一些列的权限。通俗点说就是系统判断用户是否有权限去做某些事情。
简单示例
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
增加 controller
package com.security.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("hello")
public String add(){
return "hello security";
}
}
增加 config
package com.security.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authz -> authz
.anyRequest().authenticated() // 所有请求都需要登录
)
.formLogin(form -> form
.permitAll() // 允许所有用户访问默认的登录页面
)
.logout(logout -> logout
.permitAll() // 允许所有用户访问默认的登出页面
);
return http.build();
}
}
浏览器输入 http://localhost:8080/hello
会跳转到 http://localhost:8080/login
默认账号 user,密码在控制台
输入账号密码,会回调到 hello 的路由上