v1.27.1 新增jwt集成插件

This commit is contained in:
click33
2021-10-18 22:05:26 +08:00
parent 4a91553a77
commit 6d26761fd5
30 changed files with 679 additions and 389 deletions

View File

@@ -59,7 +59,7 @@
- **插件**
- [AOP注解鉴权](/plugin/aop-at)
- [临时Token](/plugin/temp-token)
- [临时Token](/plugin/temp-token)
- [Quick-Login快速登录插件](/plugin/quick-login)
- [Alone独立Redis插件](/plugin/alone-redis)
- [持久层扩展](/plugin/dao-extend)

View File

@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<title>Sa-Token</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="sa-token是一个java权限认证框架功能全面上手简单登录证、权限证、Session会话、踢人下线、账号封禁、集成Redis、前后台分离、分布式会话、微服务网关鉴权、单点登录、OAuth2.0、临时Token验证、记住我模式、模拟他人账号、临时身份切换、多账号体系、注解式鉴权、路由拦截式鉴权、花式token、自动续签、同端互斥登录、会话治理、密码加密、jwt集成、Spring集成、WebFlux集成...有了sa-token你所有的权限认证问题都不再是问题">
<meta name="description" content="sa-token是一个java权限认证框架功能全面上手简单登录证、权限证、Session会话、踢人下线、账号封禁、集成Redis、前后台分离、分布式会话、微服务网关鉴权、单点登录、OAuth2.0、临时Token验证、记住我模式、模拟他人账号、临时身份切换、多账号体系、注解式鉴权、路由拦截式鉴权、花式token、自动续签、同端互斥登录、会话治理、密码加密、jwt集成、Spring集成、WebFlux集成...有了sa-token你所有的权限认证问题都不再是问题">
<meta name="keywords" content="sa-token,sa-token框架,sa-token文档,java权限认证">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="shortcut icon" type="image/x-icon" href="logo.png">

View File

@@ -83,7 +83,7 @@ public class SaTokenConfigure {
.addExclude("/favicon.ico")
// 鉴权方法:每次访问进入
.setAuth(obj -> {
// 登录验 -- 拦截所有路由,并排除/user/doLogin 用于开放登录
// 登录验 -- 拦截所有路由,并排除/user/doLogin 用于开放登录
SaRouter.match("/**", "/user/doLogin", r -> StpUtil.checkLogin());
// 权限认证 -- 不同模块, 校验不同权限

View File

@@ -12,7 +12,7 @@ SaManager.getStpInterface(); // 获取权限认证对象
SaManager.getSaTokenAction(); // 获取框架行为对象
SaManager.getSaTokenContext(); // 获取上下文处理对象
SaManager.getSaTokenListener(); // 获取侦听器对象
SaManager.getSaTemp(); // 获取临时令牌证模块对象
SaManager.getSaTemp(); // 获取临时令牌证模块对象
SaManager.getStpLogic("type"); // 获取指定账号类型的StpLogic对象
```

View File

@@ -1,4 +1,4 @@
# 临时Token令牌
# 临时Token令牌
---
@@ -37,7 +37,7 @@ http://xxx.com/apply?token=oEwQBnglXDoGraSJdGaLooPZnGrk
### 相关API
**[sa-token-temp临时证模块]** 已内嵌到核心包,无需引入其它依赖即可使用
**[sa-token-temp临时证模块]** 已内嵌到核心包,无需引入其它依赖即可使用
``` java
// 根据 value 创建一个 token
@@ -55,7 +55,7 @@ SaTempUtil.deleteToken(token);
### 集成jwt
提到 [临时Token证]你是不是想到一个专门干这件事的框架就是JWT
提到 [临时Token证]你是不是想到一个专门干这件事的框架就是JWT
**[sa-token-temp]** 模块允许以JWT作为逻辑内核完成工作你只需要引入以下依赖所有上层API保持不变

View File

@@ -198,7 +198,7 @@ public class SaSsoClientApplication {
至此,测试完毕!
可以看出,除了在`Client1`端我们需要手动登录一次之外,在`Client2端`和`Client3端`都是可以无需证,直接登录成功的。
可以看出,除了在`Client1`端我们需要手动登录一次之外,在`Client2端`和`Client3端`都是可以无需再次认证,直接登录成功的。
我们可以通过 F12控制台 Netword跟踪整个过程

View File

@@ -107,6 +107,14 @@ public Object myinfo() {
访问测试:[http://sa-sso-client1.com:9001/sso/myinfo](http://sa-sso-client1.com:9001/sso/myinfo)
#### 3.3、疑问
群里有小伙伴提问:`SaSsoUtil.getUserinfo` 提供的参数太少,只有一个 loginId无法满足业务需求怎么办
SaSsoUtil.getUserinfo只是为了避免你在项目中硬编码认证中心 url 而提供的简易封装如果这个API无法满足你的业务需求
你完全可以在 Server 端自定义一些接口然后从 Client 端使用 http 工具调用即可。
### 4、无刷单点注销

View File

@@ -42,7 +42,7 @@ public class SaTokenConfigure {
.setAuth(obj -> {
System.out.println("---------- 进入Sa-Token全局认证 -----------");
// 登录证 -- 拦截所有路由,并排除/user/doLogin 用于开放登录
// 登录证 -- 拦截所有路由,并排除/user/doLogin 用于开放登录
SaRouter.match("/**", "/user/doLogin", () -> StpUtil.checkLogin());
// 更多拦截处理方式,请参考“路由拦截式鉴权”章节

View File

@@ -5,7 +5,7 @@
有的时候,我们会在一个项目中设计两套账号体系,比如一个电商系统的 `user表``admin表`
在这种场景下,如果两套账号我们都使用 `StpUtil` 类的API进行登录鉴权那么势必会发生逻辑冲突
在Sa-Token中这个问题的模型叫做多账号体系
在Sa-Token中这个问题的模型叫做多账号体系
要解决这个问题,我们必须有一个合理的机制将这两套账号的授权给区分开,让它们互不干扰才行
@@ -22,7 +22,7 @@
### 2、解决方案
前面几篇介绍的api调用都是经过 StpUtil 类的各种静态方法进行授权证,
前面几篇介绍的api调用都是经过 StpUtil 类的各种静态方法进行授权证,
而如果我们深入它的源码,[点此阅览](https://gitee.com/dromara/sa-token/blob/master/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java) <br/>
就会发现,此类并没有任何代码逻辑,唯一做的事就是对成员变量`stpLogic`的各个API包装一下进行转发
@@ -33,8 +33,8 @@
### 3、操作示例
比如说,对于原生`StpUtil`类,我们只做`admin账号`权限证,而对于`user账号`,我们则:
1. 新建一个新的权限证类,比如: `StpUserUtil.java`
比如说,对于原生`StpUtil`类,我们只做`admin账号`权限证,而对于`user账号`,我们则:
1. 新建一个新的权限证类,比如: `StpUserUtil.java`
2.`StpUtil.java`类的全部代码复制粘贴到 `StpUserUtil.java`
3. 更改一下其 `LoginType` 比如:

View File

@@ -112,7 +112,8 @@ StpUtil.checkRoleOr("super-admin", "shop-admin");
### 拦截全局异常
有同学要问,鉴权失败,抛出异常,然后呢?要把异常显示给用户看吗?**当然不可以!** <br>
你可以创建一个全局异常拦截器,统一返回给前端的格式,参考:[码云GlobalException.java](https://gitee.com/dromara/sa-token/blob/master/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/test/GlobalException.java)
你可以创建一个全局异常拦截器,统一返回给前端的格式,参考:
[码云GlobalException.java](https://gitee.com/dromara/sa-token/blob/master/sa-token-demo/sa-token-demo-springboot/src/main/java/com/pj/current/GlobalException.java)
### 权限通配符

View File

@@ -2,7 +2,7 @@
---
假设我们有如下需求:
> 项目中所有接口均需要登录证,只有'登录接口'本身对外开放
> 项目中所有接口均需要登录证,只有'登录接口'本身对外开放
我们怎么实现呢?给每个接口加上鉴权注解?手写全局拦截器?似乎都不是非常方便。<br/>
在这个需求中我们真正需要的是一种基于路由拦截的鉴权模式, 那么在Sa-Token怎么实现路由拦截鉴权呢