mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-08-24 07:22:48 +08:00
Merge branch 'dev' of https://gitee.com/dromara/sa-token into dev
This commit is contained in:
commit
1a1d90787a
@ -136,18 +136,6 @@ Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点
|
||||
|
||||
|
||||
## 交流群
|
||||
QQ交流群:707350988 [点击加入](https://jq.qq.com/?_wv=1027&k=tqbzHT2D)
|
||||
加入 Sa-Token 框架 QQ、微信讨论群:[点击加入](/more/join-group.md)
|
||||
|
||||
微信交流群:
|
||||
|
||||

|
||||
|
||||
(扫码添加微信,备注:sa-token,邀您加入群聊)
|
||||
|
||||
<br>
|
||||
|
||||
加入群聊的好处:
|
||||
- 第一时间收到框架更新通知。
|
||||
- 第一时间收到框架 bug 通知。
|
||||
- 第一时间收到新增开源案例通知。
|
||||
- 和众多大佬一起互相 (huá shuǐ) 交流 (mō yú)。
|
||||
|
@ -152,6 +152,7 @@
|
||||
|
||||
<!-- -->
|
||||
<script src="./static/docsify-plugin.js"></script>
|
||||
<script src="./static/is-star-plugin.js"></script>
|
||||
<script>
|
||||
var saTokenTopVersion = '1.35.0.RC'; // Sa-Token最新版本
|
||||
var name = '<img style="width: 60px; height: 60px; vertical-align: middle;" src="logo.png" alt="logo" /> ';
|
||||
@ -187,7 +188,7 @@
|
||||
tabHeadings: true // 用标题+粗体来定制选项卡
|
||||
},
|
||||
// 自定义插件
|
||||
plugins: [myDocsifyPlugin],
|
||||
plugins: [myDocsifyPlugin, window.isStarPlugin],
|
||||
}
|
||||
</script>
|
||||
<script src="static/docsify.min.js"></script>
|
||||
|
@ -183,7 +183,7 @@
|
||||
<div class="s-fenge"></div>
|
||||
<h2 class="s-title">优秀开源集成案例</h2>
|
||||
<div class="feature-box s-case-box">
|
||||
<!-- Snowy 5.5k -->
|
||||
<!-- Snowy 6.1K -->
|
||||
<div class="s-case">
|
||||
<a href="https://gitee.com/xiaonuobase/snowy" target="_blank" class="s-case-link">
|
||||
<img class="lazy" data-original="https://oss.dev33.cn/sa-token/case/case--snowy.png">
|
||||
@ -192,16 +192,7 @@
|
||||
<span class="s-author"> 小诺开源技术 </span>
|
||||
<p class="s-case-intro">国内首个国密前后分离快速开发平台,基于Vue3、Antdv、SaToken</p>
|
||||
</div>
|
||||
<!-- SpringBoot_v2 5.3k -->
|
||||
<div class="s-case">
|
||||
<a href="https://gitee.com/bdj/SpringBoot_v2" target="_blank" class="s-case-link">
|
||||
<img class="lazy" data-original="https://oss.dev33.cn/sa-token/case/case--springboot_v2.png">
|
||||
</a>
|
||||
<h3 class="s-case-title">SpringBoot_v2</h3>
|
||||
<span class="s-author">开源oschina</span>
|
||||
<p class="s-case-intro">努力打造 springboot 框架的极致细腻的脚手架,原生纯净。</p>
|
||||
</div>
|
||||
<!-- RuoYi-Vue-Plus 4.1k -->
|
||||
<!-- RuoYi-Vue-Plus 5.9k -->
|
||||
<div class="s-case">
|
||||
<a href="https://gitee.com/dromara/RuoYi-Vue-Plus" target="_blank" class="s-case-link">
|
||||
<img class="lazy" data-original="https://oss.dev33.cn/sa-token/case/case--ruoyi-vue-plus.png">
|
||||
@ -210,7 +201,16 @@
|
||||
<span class="s-author"> 疯狂的狮子Li </span>
|
||||
<p class="s-case-intro">重写 RuoYi-Vue 所有功能,集成 Sa-Token、Mybatis-Plus、Hutool 定期同步</p>
|
||||
</div>
|
||||
<!-- RuoYi-Cloud-Plus 1.5K -->
|
||||
<!-- SpringBoot_v2 5.5k -->
|
||||
<div class="s-case">
|
||||
<a href="https://gitee.com/bdj/SpringBoot_v2" target="_blank" class="s-case-link">
|
||||
<img class="lazy" data-original="https://oss.dev33.cn/sa-token/case/case--springboot_v2.png">
|
||||
</a>
|
||||
<h3 class="s-case-title">SpringBoot_v2</h3>
|
||||
<span class="s-author">开源oschina</span>
|
||||
<p class="s-case-intro">努力打造 springboot 框架的极致细腻的脚手架,原生纯净。</p>
|
||||
</div>
|
||||
<!-- RuoYi-Cloud-Plus 2.4K -->
|
||||
<div class="s-case">
|
||||
<a href="https://gitee.com/dromara/RuoYi-Cloud-Plus" target="_blank" class="s-case-link">
|
||||
<img class="lazy" data-original="https://oss.dev33.cn/sa-token/case/case--ruoyi-cloud-plus.png">
|
||||
@ -219,7 +219,7 @@
|
||||
<span class="s-author"> 疯狂的狮子Li </span>
|
||||
<p class="s-case-intro">重写 RuoYi-Cloud 所有功能 整合 SpringCloudAlibaba、Dubbo3.0、Sa-Token</p>
|
||||
</div>
|
||||
<!-- Sa-Plus 1K -->
|
||||
<!-- Sa-Plus 1.1K -->
|
||||
<div class="s-case">
|
||||
<a href="https://gitee.com/click33/sa-plus" target="_blank" class="s-case-link">
|
||||
<img class="lazy" data-original="https://oss.dev33.cn/sa-token/case/case--sa-plus.png">
|
||||
@ -228,7 +228,7 @@
|
||||
<span class="s-author"> 孔明 </span>
|
||||
<p class="s-case-intro">一个基于 SpringBoot 的快速开发框架,内置代码生成器</p>
|
||||
</div>
|
||||
<!-- EasyAdmin 878 -->
|
||||
<!-- EasyAdmin 996 -->
|
||||
<div class="s-case">
|
||||
<a href="https://gitee.com/lakernote/easy-admin" target="_blank" class="s-case-link">
|
||||
<img class="lazy" data-original="https://oss.dev33.cn/sa-token/case/case--easy-admin.png">
|
||||
|
@ -6,9 +6,9 @@
|
||||
|
||||
### 1、加入QQ交流群
|
||||
|
||||

|
||||

|
||||
|
||||
QQ交流群:707350988 [点击加入](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=98NOhX0Q3a2hcv3eURcnYMBuZUZrlHUH&authKey=td3pmX3BnYNr%2FCRkEDwE5FgGARk29D9HAMwL0bAfK7tqN8XN93jccnEanyZl18mM&noverify=0&group_code=837325627)
|
||||
QQ交流群:837325627 [点击加入](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=98NOhX0Q3a2hcv3eURcnYMBuZUZrlHUH&authKey=td3pmX3BnYNr%2FCRkEDwE5FgGARk29D9HAMwL0bAfK7tqN8XN93jccnEanyZl18mM&noverify=0&group_code=837325627)
|
||||
|
||||
### 2、加入微信交流群:
|
||||
|
||||
|
@ -21,6 +21,8 @@ Sa-Token 采用 Apache-2.0 开源协议,**承诺框架本身与官网文档永
|
||||
|
||||
| 赞助人 | 赞助金额 | 留言 | 时间 |
|
||||
| :-------- | :-------- | :-------- | :-------- |
|
||||
| [XiaoYi](https://gitee.com/getianit) | ¥ 100.0 | [亚洲云深圳BGP云服务器](https://www.asiayun.com/cart?action=configureproduct&pid=300) | 2023-07-24 |
|
||||
| [张兆伟](https://gitee.com/zhang865700) | ¥ 50.0 | 感谢您的开源项目! | 2023-07-24 |
|
||||
| [mikeinshanghai](https://gitee.com/mikeinshanghai)| ¥ 50.0 | Sa-Token, MeterSphere共成长,共辉煌! | 2023-07-14 |
|
||||
| [Dear胜哥](https://gitee.com/DearShengGe) | ¥ 10.0 | 有幸在摸鱼时间认真看完了全文档,感觉很是不错。开源不易,望作者继续扩展该框架功能! | 2023-06-30 |
|
||||
| [SP](https://gitee.com/LSP1999) | ¥ 10.0 | 就是需要这种简单上手的项目 | 2023-06-15 |
|
||||
@ -145,9 +147,11 @@ Sa-Token 采用 Apache-2.0 开源协议,**承诺框架本身与官网文档永
|
||||
|
||||
### 商业赞助
|
||||
|
||||
一次性赞助 100 元或以上,可帮助您的产品在 Sa-Token 交流群艾特全体成员推广一次。
|
||||
一次性赞助 200 元或以上,可帮助您的产品在 Sa-Token 交流群艾特全体成员推广一次。
|
||||
|
||||
Sa-Token 目前总计10+微信交流群(每个群人数400以上,总人数5000+),4个QQ交流群(2000人群和1000人群,总计人数6000+),大部分为 java 开发工程师,可有效推广您的产品。
|
||||
并同时在赞助列表处高亮产品链接。
|
||||
|
||||
Sa-Token 目前总计14+微信交流群(每个群人数大约400以上,总计人数5000+),4个QQ交流群(2000人群和1000人群,总计人数6000+),大部分为 java 开发工程师,可有效推广您的产品。
|
||||
|
||||
- 优先推广和程序员相关的互联网产品,比如:低代码开发平台、网课、开发软件、云服务器、个人博客等等,实体产品如键盘、显示器、耳机等等,如果是和程序员无关的产品,可酌情考虑是否推广。
|
||||
- 拒绝接受违反法律法规、以及灰色相关的产品推广,为避免不必要的麻烦,目前也拒绝推广IP代理、上网工具等等。
|
||||
@ -161,7 +165,7 @@ Sa-Token 目前总计10+微信交流群(每个群人数400以上,总人数50
|
||||
``` txt
|
||||
感谢 xx 老板对 Sa-Token 的商业赞助,以下是老板的产品,大家感兴趣的可以关注一下:
|
||||
xxx 商品名称
|
||||
链接:https://xxx.com/xxx
|
||||
链接:https://xxxxxn.com/xxx
|
||||
```
|
||||
|
||||
> 目前不接受 Sa-Token 官网文档插入广告推广,只接受一次性商业赞助推广。
|
@ -1,7 +1,7 @@
|
||||
# 更新日志
|
||||
|
||||
|
||||
### 2023-6-23 @v1.35.0
|
||||
### v1.35.0 @2023-6-23
|
||||
- sa-token-core:
|
||||
- 优化:前端未提供 token 时,`getTokenSession()` 将抛出未登录异常,而不是返回 null。 **[不向下兼容]**
|
||||
- 新增:SaSession 新增字段:`type`、`loginType`、`loginId`、`token`。
|
||||
@ -69,7 +69,7 @@
|
||||
- `sa-token-context-grpc` -> `sa-token-grpc`。
|
||||
|
||||
|
||||
### 2023-1-11 @v1.34.0
|
||||
### v1.34.0 @2023-1-11
|
||||
|
||||
新增插件:
|
||||
- 新增:新增 `SpringBoot3.x` 集成插件,感谢 `@jry` 提供的参考思路。 **[重要]**
|
||||
@ -95,7 +95,7 @@ sa-token-sso 单点登录:
|
||||
|
||||
|
||||
|
||||
### 2022-11-16 @v1.33.0
|
||||
### v1.33.0 @2022-11-16
|
||||
- 重构:重构异常状态码机制。 **[重要]**
|
||||
- 重构:重构 sa-token-sso 模块异常码改为 300 开头,sa-token-jwt 异常码改为 302 开头。 **[不向下兼容]**
|
||||
- 新增:新增全局 Log 模块。 **[重要]**
|
||||
@ -106,7 +106,7 @@ sa-token-sso 单点登录:
|
||||
|
||||
|
||||
|
||||
### 2022-10-28 @v1.32.0
|
||||
### v1.32.0 @2022-10-28
|
||||
- 修复:修复 sa-token-dao-redis-fastjson 插件多余序列化 `timeout` 字段的问题。
|
||||
- 修复:修复 sa-token-dao-redis-fastjson 插件 `session.getModel` 无法反序列化实体类的问题。
|
||||
- 修复:修复 `sa-token-quick-login` 插件指定拦截排除路由不生效的问题。
|
||||
@ -146,7 +146,7 @@ sa-token-sso 单点登录:
|
||||
|
||||
|
||||
|
||||
### 2022-9-8 @v1.31.0
|
||||
### v1.31.0 @2022-9-8
|
||||
- 文档:新增优秀开源案例展示。
|
||||
- 文档:新增博客展示,欢迎大家投稿。
|
||||
- 新增:新增 `SaInterceptor` 综合拦截器。 **[重要]** **[不向下兼容]**
|
||||
@ -185,7 +185,7 @@ sa-token-sso 单点登录:
|
||||
|
||||
|
||||
|
||||
### 2022-05-9 @v1.30.0
|
||||
### v1.30.0 @2022-05-9
|
||||
- 新增:新增集成 Web-Socket 鉴权示例。 **[重要]**
|
||||
- 新增:新增集成 Web-Socket(Spring封装版) 鉴权示例。
|
||||
- 新增:新增 jfinal 集成包 `sa-token-jfinal-plugin` **[重要]**
|
||||
@ -230,7 +230,7 @@ sa-token-sso 单点登录:
|
||||
- 修复:修复 `StpLogicJwtForSimple` 模式下 Extra 数据可能受到旧 token 影响的bug
|
||||
|
||||
|
||||
### 2022-02-10 @v1.29.0
|
||||
### v1.29.0 @2022-02-10
|
||||
- 升级:sa-token-jwt插件可在登录时添加额外数据。
|
||||
- 重构:优化Dubbo调用时向下传递Token的规则,可避免在项目启动时由于Context无效引发的bug。
|
||||
- 重构:OAuth2 授权模式开放由全局配置和Client单独配置共同设定。
|
||||
@ -252,7 +252,7 @@ sa-token-sso 单点登录:
|
||||
- 完善:完善单元测试。
|
||||
|
||||
|
||||
### 2021-11-5 @v1.28.0
|
||||
### v1.28.0 @2021-11-5
|
||||
- 新增:新增 `sa-token-jwt` 插件,用于与jwt的整合 **[重要]**
|
||||
- 新增:新增 `sa-token-context-dubbo` 插件,用于与 Dubbo 的整合 **[重要]**
|
||||
- 文档:文档新增章节:Sa-Token 插件开发指南 **[重要]**
|
||||
@ -266,7 +266,7 @@ sa-token-sso 单点登录:
|
||||
- 文档:新增常见问题总结
|
||||
|
||||
|
||||
### 2021-10-11 @v1.27.0
|
||||
### v1.27.0 @2021-10-11
|
||||
- 升级:增强 SaRouter 链式匹配能力 **[重要]**
|
||||
- 新增:新增插件 Thymeleaf 标签方言 **[重要]**
|
||||
- 新增:@SaCheckPermission 增加 orRole 字段,用于权限角色“双重or”匹配 **[重要]**
|
||||
@ -291,7 +291,7 @@ sa-token-sso 单点登录:
|
||||
- [不向下兼容] 侦听器 doLogoutByLoginId 方法重命名为 doKickout
|
||||
|
||||
|
||||
### 2021-9-2 @v1.26.0
|
||||
### v1.26.0 @2021-9-2
|
||||
- 优化:优化单点登录文档
|
||||
- 新增:新增 `Http Basic` 认证 **[重要]**
|
||||
- 新增:文档新增跨域解决方案
|
||||
@ -300,7 +300,7 @@ sa-token-sso 单点登录:
|
||||
- 示例:新增 `SSO-Server` 端前后端分离示例 **[重要]**
|
||||
|
||||
|
||||
### 2021-8-16 @v1.25.0
|
||||
### v1.25.0 @2021-8-16
|
||||
- 新增:`SaRequest`新增`getHeader(name, defaultValue)`方法,用于获取header默认值
|
||||
- 新增:`SaRequest` 添加 `forward` 转发方法
|
||||
- 新增:Readme新增源码模块介绍、友情链接、正在使用Sa-Token的项目
|
||||
@ -320,7 +320,7 @@ sa-token-sso 单点登录:
|
||||
- 重构:修复 `SaReactorHolder.getContent()` 拼写错误:`content` -> `context`
|
||||
|
||||
|
||||
### 2021-7-24 @v1.24.0
|
||||
### v1.24.0 @2021-7-24
|
||||
- 修复:修复部分场景下Alone-Redis插件导致项目无法启动的问题
|
||||
- 优化:增加对SpringBoot1.x版本的兼容性
|
||||
- 新增:SaOAuth2Util新增checkScope函数,用于校验令牌是否具备指定权限
|
||||
@ -330,14 +330,14 @@ sa-token-sso 单点登录:
|
||||
- 优化:大幅度优化文档示例
|
||||
|
||||
|
||||
### 2021-7-19 @v1.23.0
|
||||
### v1.23.0 @2021-7-19
|
||||
- 新增:Sa-Token-OAuth2 模块正式发布 **[重要]**
|
||||
- 修复:修复jwt集成demo无法正确注册StpLogic的bug
|
||||
- 修复:修复登录时某些场景下Session续期可能不正常的bug
|
||||
- 优化:代码注释优化,文档优化
|
||||
|
||||
|
||||
### 2021-7-10 @v1.22.0
|
||||
### v1.22.0 @2021-7-10
|
||||
- 新增:SaSsoConfig 部分属性增加set连缀风格
|
||||
- 优化:SaSsoUtil 可定制化底层的 `StpLogic`
|
||||
- 新增:新增 `SaSsoHandle` 大幅度简化单点登录整合步骤 **[重要]**
|
||||
@ -346,7 +346,7 @@ sa-token-sso 单点登录:
|
||||
- 优化:大幅度优化文档示例
|
||||
|
||||
|
||||
### 2021-7-2 @v1.21.0
|
||||
### v1.21.0 @2021-7-2
|
||||
- 新增:新增Token二级认证 **[重要]**
|
||||
- 新增:新增`Sa-Token-Alone-Redis`独立Redis插件 **[重要]**
|
||||
- 新增:新增SSO三种模式,彻底解决所有场景下的单点登录问题 **[重要]**
|
||||
@ -356,7 +356,7 @@ sa-token-sso 单点登录:
|
||||
- 更改yml配置前缀:原`[spring.sa-token.]` 改为 `[sa-token.]`,目前版本暂时向下兼容,请尽快更新
|
||||
|
||||
|
||||
### 2021-6-17 @v1.20.0
|
||||
### v1.20.0 @2021-6-17
|
||||
- 新增:新增Solon适配插件,感谢大佬 `@刘西东` 提供的pr **[重要]**
|
||||
- 新增:新增`SaRouter.stop()`函数,用于一次性跳出匹配链功能 **[重要]**
|
||||
- 新增:新增单元测试 **[重要]**
|
||||
@ -377,7 +377,7 @@ sa-token-sso 单点登录:
|
||||
- 为保证平滑更新,旧API仍旧保留,但已增加`@Deprecated`注解,请尽快更新至新API
|
||||
|
||||
|
||||
### 2021-5-10 @v1.19.0
|
||||
### v1.19.0 @2021-5-10
|
||||
- 新增:注解鉴权新增定制loginType功能 **[重要]**
|
||||
- 重构:重构目录结构,抽离`plugin`模块 **[重要]**
|
||||
- 新增:新增 `sa-token-quick-login` 插件,零代码集成登录功能 **[重要]**
|
||||
@ -385,7 +385,7 @@ sa-token-sso 单点登录:
|
||||
- 优化:文档优化...
|
||||
|
||||
|
||||
### 2021-4-24 @v1.18.0
|
||||
### v1.18.0 @2021-4-24
|
||||
- 新增:新增权限通配符功能,灵活设置权限 **[重要]**
|
||||
- 修复:修复自动续签处的逻辑错误
|
||||
- 新增:新增Web开发常见漏洞防护建议
|
||||
@ -398,7 +398,7 @@ sa-token-sso 单点登录:
|
||||
- 重构:`SaTokenInsideUtil` -> `SaFoxUtil`
|
||||
|
||||
|
||||
### 2021-4-17 @v1.17.0
|
||||
### v1.17.0 @2021-4-17
|
||||
- 修复:在WebFlux环境中引入Redis集成包无法启动的问题
|
||||
- 修复:修复JWT集成示例中版本升级API的变更
|
||||
- 优化:优化启动时字符画打印
|
||||
@ -409,7 +409,7 @@ sa-token-sso 单点登录:
|
||||
- 新增:新增全局侦听器,可在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作 **[重要]**
|
||||
|
||||
|
||||
### 2021-4-12 @v1.16.0
|
||||
### v1.16.0 @2021-4-12
|
||||
- 新增:新增账号封禁功能,指定时间内账号无法登陆 **[重要]**
|
||||
- 新增:核心包脱离`ServletAPI`,彻底零依赖! **[重要]**
|
||||
- 新增:新增基于`ThreadLocal`的上下文容器 **[重要]**
|
||||
@ -420,7 +420,7 @@ sa-token-sso 单点登录:
|
||||
- 文档:新增推荐公众号列表
|
||||
|
||||
|
||||
### 2021-3-23 @v1.15.0
|
||||
### v1.15.0 @2021-3-23
|
||||
- 新增:文档添加源码涉及技术栈说明
|
||||
- 优化:优化路由拦截器模块文档,更简洁的示例
|
||||
- 修复:修复非web环境下的错误提示,Request->Response
|
||||
@ -440,7 +440,7 @@ sa-token-sso 单点登录:
|
||||
- `SaRouteInterceptor`去出冗余API,详情参考路由鉴权部分
|
||||
|
||||
|
||||
### 2021-3-12 @v1.14.0
|
||||
### v1.14.0 @2021-3-12
|
||||
- 新增:新增`SaLoginModel`登录参数Model,适配 [记住我] 模式 **[重要]**
|
||||
- 新增:新增 `StpUtil.login()` 时指定token有效期,可灵活控制用户的一次登录免验证时长
|
||||
- 新增:新增Cookie时间判断,在`timeout`设置为-1时,`Cookie`有效期将为`Integer.MAX_VALUE` **[重要]**
|
||||
@ -458,7 +458,7 @@ sa-token-sso 单点登录:
|
||||
- 文档:优化文档,部分模块添加图片说明
|
||||
|
||||
|
||||
### 2021-2-9 @v1.13.0
|
||||
### v1.13.0 @2021-2-9
|
||||
- 优化:优化源码注释与文档
|
||||
- 新增:文档集成Gitalk评论系统
|
||||
- 优化:源码包`Maven`版本号更改为变量形式
|
||||
@ -473,7 +473,7 @@ sa-token-sso 单点登录:
|
||||
- 新增:完善分布式会话的文档说明
|
||||
|
||||
|
||||
### 2021-1-12 @v1.12.0
|
||||
### v1.12.0 @2021-1-12
|
||||
- 新增:提供JWT集成示例 **[重要]**
|
||||
- 新增:新增路由式鉴权,可方便的根据路由匹配鉴权 **[重要]**
|
||||
- 新增:新增身份临时切换功能,可在一个代码段内将会话临时切换为其它账号 **[重要]**
|
||||
@ -482,23 +482,23 @@ sa-token-sso 单点登录:
|
||||
- 升级:v1.12.1,新增`SaRouterUtil`工具类,更方便的路由鉴权 **[重要]**
|
||||
|
||||
|
||||
### 2021-1-10 @v1.11.0
|
||||
### v1.11.0 @2021-1-10
|
||||
- 新增:提供AOP注解鉴权方案 **[重要]**
|
||||
- 优化自动生成token的算法
|
||||
|
||||
|
||||
### 2021-1-9 @v1.10.0
|
||||
### v1.10.0 @2021-1-9
|
||||
- 新增:提供查询所有会话方案 **[重要]**
|
||||
- 修复:修复token设置为永不过期时无法正常被顶下线的bug,感谢github用户 @zjh599245299 提出的bug
|
||||
|
||||
|
||||
### 2021-1-6 @v1.9.0
|
||||
### v1.9.0 @2021-1-6
|
||||
- 优化:`spring-boot-starter-data-redis` 由 `2.3.7.RELEASE` 改为 `2.3.3.RELEASE`
|
||||
- 修复:补上注解拦截器里漏掉验证`@SaCheckRole`的bug
|
||||
- 新增:新增同端互斥登录,像QQ一样手机电脑同时在线,但是两个手机上互斥登录 **[重要]**
|
||||
|
||||
|
||||
### 2021-1-2 @v1.8.0
|
||||
### v1.8.0 @2021-1-2
|
||||
- 优化:优化源码注释
|
||||
- 修复:修复部分文档错别字
|
||||
- 修复:修复项目文件夹名称错误
|
||||
@ -517,7 +517,7 @@ sa-token-sso 单点登录:
|
||||
- 升级:开源协议修改为`Apache-2.0`
|
||||
|
||||
|
||||
### 2020-12-24 @v1.7.0
|
||||
### v1.7.0 @2020-12-24
|
||||
- 优化:项目架构改为maven多模块形式,方便增加新模块 **[重要]**
|
||||
- 优化:与`springboot`的集成改为`springboot-starter`模式,无需`@SaTokenSetup`注解即可完成自动装配 **[重要]**
|
||||
- 新增:新增`activity-timeout`配置,可控制token临时过期与续签功能 **[重要]**
|
||||
@ -527,13 +527,13 @@ sa-token-sso 单点登录:
|
||||
- 修复:修复文档首页样式问题
|
||||
|
||||
|
||||
### 2020-12-17 @v1.6.0
|
||||
### v1.6.0 @2020-12-17
|
||||
- 新增:花式token生成方案 **[重要]**
|
||||
- 优化:优化`readme.md`
|
||||
- 修复:修复`SaCookieOper`与`SaTokenAction`无法自动注入的问题
|
||||
|
||||
|
||||
### 2020-12-16 @v1.5.1
|
||||
### v1.5.1 @2020-12-16
|
||||
- 新增:细化未登录异常类型,提供五种场景值:未提供token、token无效、token已过期 、token已被顶下线、token已被踢下线 **[重要]**
|
||||
- 修复:修复`StpUtil.getSessionByLoginId(String loginId)`方法转换key出错的bug,感谢群友 @(#°Д°)、@一米阳光 发现的bug
|
||||
- 优化:修改方法`StpUtil.getSessionByLoginId(Object loginId)`的isCreate值默认为true
|
||||
@ -547,7 +547,7 @@ sa-token-sso 单点登录:
|
||||
- 升级:开源协议修改为`MIT`
|
||||
|
||||
|
||||
### 2020-9-7 @v1.4.0
|
||||
### v1.4.0 @2020-9-7
|
||||
- 优化:修改一些函数、变量名称,使其更符合阿里java代码规范
|
||||
- 优化:`tokenValue`的读取优先级改为:`request` > `body` > `header` > `cookie` **[重要]**
|
||||
- 新增:新增`isReadCookie`配置,决定是否从`cookie`里读取`token`信息
|
||||
@ -556,7 +556,7 @@ sa-token-sso 单点登录:
|
||||
- 修复:修复文档部分错误,修正群号码
|
||||
|
||||
|
||||
### 2020-5-2 @v1.3.0
|
||||
### v1.3.0 @2020-5-2
|
||||
- 新增:新增 `StpUtil.checkLogin()` 方法,更符合语义化的鉴权方法
|
||||
- 新增:注册拦截器时可设置 `StpLogic` ,方便不同模块不同鉴权方式
|
||||
- 新增:抛出异常时增加 `loginType` 区分,方便多账号体系鉴权处理
|
||||
@ -565,14 +565,14 @@ sa-token-sso 单点登录:
|
||||
- 新增:新增文档的友情链接
|
||||
|
||||
|
||||
### 2020-3-7 @v1.2.0
|
||||
### v1.2.0 @2020-3-7
|
||||
- 新增:新增注解式验证,可在路由方法中使用注解进行权限验证 **[重要]**
|
||||
- 参考:[注解式验证](use/at-check)
|
||||
|
||||
|
||||
### 2020-2-12 @v1.1.0
|
||||
### v1.1.0 @2020-2-12
|
||||
- 修复:修复`StpUtil.getLoginId(T defaultValue)`取值转换错误的bug
|
||||
|
||||
|
||||
### 2020-2-4 @v1.0.0
|
||||
### v1.0.0 @2020-2-4
|
||||
- 第一个版本出炉
|
||||
|
218
sa-token-doc/static/is-star-plugin.js
Normal file
218
sa-token-doc/static/is-star-plugin.js
Normal file
@ -0,0 +1,218 @@
|
||||
//
|
||||
|
||||
// 声明 docsify 插件
|
||||
var isStarPlugin = function(hook, vm) {
|
||||
|
||||
// 切换文档的次数,每隔固定次数检测一下
|
||||
let changePage = -1;
|
||||
|
||||
// 钩子函数:解析之前执行
|
||||
hook.beforeEach(function(content) {
|
||||
return content;
|
||||
});
|
||||
|
||||
// 钩子函数:每次路由切换时,解析内容之后执行
|
||||
hook.afterEach(function(html) {
|
||||
changePage++;
|
||||
if(changePage % 15 === 0) {
|
||||
isStarRepo();
|
||||
}
|
||||
return html;
|
||||
});
|
||||
|
||||
// 每钩子函数:次路由切换时数据全部加载完成后调用,没有参数。
|
||||
hook.doneEach(function() {
|
||||
|
||||
});
|
||||
|
||||
// 钩子函数:初始化并第一次加载完成数据后调用,没有参数。
|
||||
hook.ready(function() {
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// 应用参数
|
||||
const client_id = '0cc618beb08db99bff50e500e38c2144d95ada9abb51c00c44592726ecd583f4';
|
||||
const client_secret = '2574c2aac8ce2142e34752dc5957dddcb30bc68df5c61de64251a3a6b11a51e5';
|
||||
// const redirect_uri = 'http://local.dev33.cn:8848/sa-token-doc/doc.html';
|
||||
const redirect_uri = 'https://sa-token.cc/doc.html';
|
||||
// const docDomain = 'local.dev33.cn:8848';
|
||||
const docDomain = 'sa-token.cc';
|
||||
|
||||
// 检查成功后,多少天不再检查
|
||||
const allowDisparity = 1000 * 60 * 60 * 24 * 30;
|
||||
// const allowDisparity = 1000 * 10;
|
||||
|
||||
|
||||
// 判断当前是否已 star
|
||||
function isStarRepo() {
|
||||
// 非PC端不检查
|
||||
if(document.body.offsetWidth < 800) {
|
||||
console.log('small screen ...');
|
||||
return;
|
||||
}
|
||||
|
||||
// 判断是否在主域名下
|
||||
if(location.host !== docDomain) {
|
||||
console.log('非主域名,不检测...');
|
||||
return;
|
||||
}
|
||||
|
||||
// 判断是否近期已经判断过了
|
||||
try{
|
||||
const isStarRepo = localStorage.isStarRepo;
|
||||
if(isStarRepo) {
|
||||
// 记录 star 的时间,和当前时间的差距
|
||||
const disparity = new Date().getTime() - parseInt(isStarRepo);
|
||||
|
||||
// 差距小于一月,不再检测,大于一月,再检测一下
|
||||
if(disparity < allowDisparity) {
|
||||
console.log('checked ...');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}catch(e){
|
||||
console.error(e);
|
||||
}
|
||||
|
||||
// 开始获取 code
|
||||
getCode();
|
||||
}
|
||||
|
||||
// 去请求授权
|
||||
function getCode() {
|
||||
|
||||
// 检查url中是否有code
|
||||
const code = getParam('code');
|
||||
if(code) {
|
||||
// 有 code,进一步去请求 access_token
|
||||
getAccessToken(code);
|
||||
} else {
|
||||
// 不存在code,弹窗提示询问
|
||||
confirmStar();
|
||||
}
|
||||
}
|
||||
|
||||
// 弹窗提示点 star
|
||||
function confirmStar() {
|
||||
|
||||
// 弹窗提示文字
|
||||
let tipStr = "<p><b>嗨,同学,来支持一下 Sa-Token 吧,为项目点个 star !</b></p>";
|
||||
tipStr += "<div>仅需两步即可完成:<br>" +
|
||||
'<div>1、打开 Sa-Token <a href="https://gitee.com/dromara/sa-token" target="_blank">开源仓库主页</a>,在右上角点个 star 。</div>' +
|
||||
'<div>2、点击下方 [ 同意授权检测 ] 按钮,同意 Sa-Token 获取 API 权限进行检测。<a href="javascript:authDetails();" style="text-decoration: none;">?</a></div>' +
|
||||
"</div>";
|
||||
tipStr += "<p><b>不点也没关系 ❤️ ❤️ ❤️,Sa-Token 将努力变得更加完善!😇</b></p>";
|
||||
tipStr = '<div>' + tipStr + '</div>'
|
||||
layer.confirm(tipStr, {title: '提示', btn: ['同意授权检测', '暂时不要,我先看看文档'], area: '450px', offset: '20%'}, function(index) {
|
||||
//
|
||||
layer.close(index);
|
||||
// 用户点了确认,去 gitee 官方请求授权获取
|
||||
goAuth();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 跳转到 gitee 授权界面
|
||||
function goAuth() {
|
||||
const authUrl = "https://gitee.com/oauth/authorize" +
|
||||
"?client_id=" + client_id +
|
||||
"&redirect_uri=" + redirect_uri +
|
||||
"&response_type=code" +
|
||||
"&scope=projects";
|
||||
location.href = authUrl;
|
||||
}
|
||||
|
||||
|
||||
// 获取 access_token
|
||||
function getAccessToken(code) {
|
||||
// 根据 code 获取 access_token
|
||||
$.ajax({
|
||||
url: 'https://gitee.com/oauth/token',
|
||||
method: 'post',
|
||||
data: {
|
||||
grant_type: 'authorization_code',
|
||||
code: code,
|
||||
client_id: client_id,
|
||||
redirect_uri: redirect_uri,
|
||||
client_secret: client_secret,
|
||||
},
|
||||
success: function(res) {
|
||||
// 拿到 access_token
|
||||
const access_token = res.access_token;
|
||||
|
||||
// 根据 access_token 判断是否 star 了仓库
|
||||
$.ajax({
|
||||
url: 'https://gitee.com/api/v5/user/starred/dromara/sa-token',
|
||||
method: 'get',
|
||||
data: {
|
||||
access_token: access_token
|
||||
},
|
||||
success: function(res) {
|
||||
// success 回调即代表已经 star,gitee API 请求体不返回任何数据
|
||||
console.log('-> stared ...');
|
||||
// 记录本次检查时间
|
||||
localStorage.isStarRepo = new Date().getTime();
|
||||
//
|
||||
layer.alert('感谢你的支持 ❤️ ❤️ ❤️ ,Sa-Token 将努力变得更加完善!', function(index) {
|
||||
layer.close(index);
|
||||
// 刷新url,去掉 code 参数
|
||||
location.href = location.href.replace("?code=" + code, '');
|
||||
})
|
||||
},
|
||||
error: function(e) {
|
||||
// console.log('ff请求错误 ', e);
|
||||
// 如下返回,代表没有 star
|
||||
if(e.statusText = 'Not Found'){
|
||||
console.log('not star ...');
|
||||
layer.alert('未检测到 star 数据...', function() {
|
||||
// 刷新url,去掉 code 参数
|
||||
location.href = location.href.replace("?code=" + code, '');
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
error: function(e) {
|
||||
console.log('请求错误 ', e);
|
||||
// 无效授权,可能是 code 无效
|
||||
if(e.responseJSON.error == 'invalid_grant') {
|
||||
console.log('无效code', code);
|
||||
}
|
||||
layer.alert('check error...' + e.responseJSON.error, function(index) {
|
||||
layer.close(index);
|
||||
// 刷新url,去掉 code 参数
|
||||
let url = location.href.replace("?code=" + code, '');
|
||||
url = url.replace("&code=" + code, '');
|
||||
location.href = url;
|
||||
});
|
||||
// 一天内不再检查,否则容易引起无限重定向
|
||||
// const ygTime = allowDisparity - (1000 * 60 * 60 * 24);
|
||||
// localStorage.isStarRepo = new Date().getTime() - ygTime;
|
||||
// // 刷新url,去掉 code 参数
|
||||
// location.href = location.href.replace("?code=" + code, '');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 疑问
|
||||
function authDetails() {
|
||||
const str = "用于检测的凭证信息将仅保存你的浏览器本地,不发往任何第三方服务器,Sa-Token 文档已完整开源,源码可查";
|
||||
alert(str);
|
||||
}
|
||||
|
||||
|
||||
// 获取 url 携带的参数
|
||||
function getParam(name, defaultValue){
|
||||
var query = window.location.search.substring(1);
|
||||
var vars = query.split("&");
|
||||
for (var i=0;i<vars.length;i++) {
|
||||
var pair = vars[i].split("=");
|
||||
if(pair[0] == name){return pair[1];}
|
||||
}
|
||||
return(defaultValue == undefined ? null : defaultValue);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user