Spring-Security 簡介
官網簡介
Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications.
Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements
Spring 是一個非常流行和成功的 Java 應用開發框架。Spring Security 基於 Spring 框架,提供了一套 Web 應用安全性的完整解決方案。一般來説,Web 應用的安全性包括用户認證(Authentication)和用户授權(Authorization)兩個部分。用户認證指的是驗證某個用户是否為系統中的合法主體,也就是説用户能否訪問該系統。用户認證一般要求用户提供用户名和密碼。系統通過校驗用户名和密碼來完成認證過程。用户授權指的是驗證某個用户是否有權限執行某個操作。在一個系統中,不同用户所具有的權限是不同的。比如對一個文件來説,有的用户只能進行讀取,而有的用户可以進行修改。一般來説,系統會為不同的用户分配不同的角色,而每個角色則對應一系列的權限。
對於上面提到的兩種應用情景,Spring Security 框架都有很好的支持。在用户認證方面,Spring Security 框架支持主流的認證方式,包括 HTTP 基本認證、HTTP 表單驗證、HTTP 摘要認證、OpenID 和 LDAP 等。在用户授權方面,Spring Security 提供了基於角色的訪問控制和訪問控制列表(Access Control List,ACL),可以對應用中的領域對象進行細粒度的控制。
環境搭建
在線生成示例工程,需集成Spring Web和Thymeleaf,我選擇的springboot版本為2.7.15,截圖如下:
工程POM文件增加spring-security依賴,此時自動對應的是5.7.10版本的security:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
工程增加靜態資源文件:
application.properties文件:
#關閉模板引擎
spring.thymeleaf.cache=false
增加控制層文件:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController {
@RequestMapping({"/","/index"})
public String index(){
return "index";
}
@RequestMapping(value = "/toLogin")
public String toLogin() {
return "views/login";
}
@RequestMapping(value = "/level1/{id}")
public String level1(@PathVariable("id") Integer id) {
return "views/level1/" + id;
}
@RequestMapping(value = "/level2/{id}")
public String level2(@PathVariable("id") Integer id) {
return "views/level2/" + id;
}
@RequestMapping(value = "/level3/{id}")
public String level3(@PathVariable("id") Integer id) {
return "views/level3/" + id;
}
}
此時,還需要在springboot啓動類上增加註解,否則訪問主頁會轉入登錄驗證:
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
啓動工程,訪問 http://localhost:8080,測試是否可以打開主頁:
官方文檔
Spring-Security 5.3.0.RELEASE reference
Spring-Security 5.7 在線官網文檔
參考博客
https://www.codenong.com/cs109481518/
https://www.cnblogs.com/shunWcs/p/14893585.html
在線生成工程
https://start.spring.io/