簡介
先贅述一下身份認證和用戶授權(quán):
- 用戶認證(
Authentication
):系統(tǒng)通過校驗用戶提供的用戶名和密碼來驗證該用戶是否為系統(tǒng)中的合法主體,即是否可以訪問該系統(tǒng); - 用戶授權(quán)(
Authorization
):系統(tǒng)為用戶分配不同的角色,以獲取對應(yīng)的權(quán)限,即驗證該用戶是否有權(quán)限執(zhí)行該操作;
Web
應(yīng)用的安全性包括用戶認證和用戶授權(quán)兩個部分,而
Spring Security
(以下簡稱
Security
)基于
Spring
框架,正好可以完整解決該問題。它的真正強大之處在于它可以輕松擴展以滿足自定義要求。
原理
Security
可以看做是由一組
filter
過濾器鏈組成的權(quán)限認證。它的整個工作流程如下所示:
圖中綠色認證方式是可以配置的,橘黃色和藍色的位置不可更改:
FilterSecurityInterceptor
:最后的過濾器,它會決定當前的請求可不可以訪問Controller
ExceptionTranslationFilter
:異常過濾器,接收到異常消息時會引導(dǎo)用戶進行認證;
實戰(zhàn)
項目準備
我們使用
Spring Boot
框架來集成。1.
pom
文件引入的依賴
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-undertow
mysql
mysql-connector-java
com.baomidou
mybatis-plus-boot-starter
3.4.0
org.projectlombok
lombok
com.alibaba
fastjson
1.2.74
joda-time
joda-time
2.10.6
org.springframework.boot
spring-boot-starter-test
2.
application.yml
配置
spring:
application:
name: securityjwt
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/cheetah?characterEncoding=utf-8