实战篇:Security JWT组合拳 | 附源码
扫描二维码
随时随地手机看文章
简介
先赘述一下身份认证和用户授权:- 用户认证(
Authentication
):系统通过校验用户提供的用户名和密码来验证该用户是否为系统中的合法主体,即是否可以访问该系统; - 用户授权(
Authorization
):系统为用户分配不同的角色,以获取对应的权限,即验证该用户是否有权限执行该操作;
Web
应用的安全性包括用户认证和用户授权两个部分,而Spring Security
(以下简称Security
)基于Spring
框架,正好可以完整解决该问题。它的真正强大之处在于它可以轻松扩展以满足自定义要求。原理
Security
可以看做是由一组filter
过滤器链组成的权限认证。它的整个工作流程如下所示:图中绿色认证方式是可以配置的,橘黄色和蓝色的位置不可更改:FilterSecurityInterceptor
:最后的过滤器,它会决定当前的请求可不可以访问Controller
ExceptionTranslationFilter
:异常过滤器,接收到异常消息时会引导用户进行认证;
实战
项目准备
我们使用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