diff --git a/sa-token-doc/README.md b/sa-token-doc/README.md index efc8513a..360bce47 100644 --- a/sa-token-doc/README.md +++ b/sa-token-doc/README.md @@ -136,18 +136,6 @@ Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点 ## 交流群 -QQ交流群:707350988 [点击加入](https://jq.qq.com/?_wv=1027&k=tqbzHT2D) +加入 Sa-Token 框架 QQ、微信讨论群:[点击加入](/more/join-group.md) -微信交流群: -![微信群](https://dev33-test.oss-cn-beijing.aliyuncs.com/sa-token/i-wx-qr.png ':size=230') - -(扫码添加微信,备注:sa-token,邀您加入群聊) - -
- -加入群聊的好处: -- 第一时间收到框架更新通知。 -- 第一时间收到框架 bug 通知。 -- 第一时间收到新增开源案例通知。 -- 和众多大佬一起互相 (huá shuǐ) 交流 (mō yú)。 diff --git a/sa-token-doc/doc.html b/sa-token-doc/doc.html index 07cfb0eb..b45ed643 100644 --- a/sa-token-doc/doc.html +++ b/sa-token-doc/doc.html @@ -152,6 +152,7 @@ + diff --git a/sa-token-doc/index.html b/sa-token-doc/index.html index 9383a4dc..5e3e8c25 100644 --- a/sa-token-doc/index.html +++ b/sa-token-doc/index.html @@ -183,7 +183,7 @@

优秀开源集成案例

- +
@@ -192,16 +192,7 @@ 小诺开源技术

国内首个国密前后分离快速开发平台,基于Vue3、Antdv、SaToken

- -
- - - -

SpringBoot_v2

- 开源oschina -

努力打造 springboot 框架的极致细腻的脚手架,原生纯净。

-
- +
@@ -210,7 +201,16 @@ 疯狂的狮子Li

重写 RuoYi-Vue 所有功能,集成 Sa-Token、Mybatis-Plus、Hutool 定期同步

- + +
+ + + +

SpringBoot_v2

+ 开源oschina +

努力打造 springboot 框架的极致细腻的脚手架,原生纯净。

+
+
@@ -219,7 +219,7 @@ 疯狂的狮子Li

重写 RuoYi-Cloud 所有功能 整合 SpringCloudAlibaba、Dubbo3.0、Sa-Token

- +
@@ -228,7 +228,7 @@ 孔明

一个基于 SpringBoot 的快速开发框架,内置代码生成器

- +
diff --git a/sa-token-doc/more/join-group.md b/sa-token-doc/more/join-group.md index 29bebc15..eecc4940 100644 --- a/sa-token-doc/more/join-group.md +++ b/sa-token-doc/more/join-group.md @@ -6,9 +6,9 @@ ### 1、加入QQ交流群 -![QQ群](https://oss.dev33.cn/sa-token/qq-group-4.png ':size=180') +![QQ群](https://oss.dev33.cn/sa-token/qr/qq-group-5-gsa.png ':size=180') -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、加入微信交流群: diff --git a/sa-token-doc/more/sa-token-donate.md b/sa-token-doc/more/sa-token-donate.md index 0773f103..9bb5ee44 100644 --- a/sa-token-doc/more/sa-token-donate.md +++ b/sa-token-doc/more/sa-token-donate.md @@ -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 官网文档插入广告推广,只接受一次性商业赞助推广。 \ No newline at end of file diff --git a/sa-token-doc/more/update-log.md b/sa-token-doc/more/update-log.md index 5cb4bbba..e36cb611 100644 --- a/sa-token-doc/more/update-log.md +++ b/sa-token-doc/more/update-log.md @@ -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 - 第一个版本出炉 diff --git a/sa-token-doc/static/is-star-plugin.js b/sa-token-doc/static/is-star-plugin.js new file mode 100644 index 00000000..15c2f1f9 --- /dev/null +++ b/sa-token-doc/static/is-star-plugin.js @@ -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 = "

嗨,同学,来支持一下 Sa-Token 吧,为项目点个 star !

"; + tipStr += "
仅需两步即可完成:
" + + '
1、打开 Sa-Token 开源仓库主页,在右上角点个 star 。
' + + '
2、点击下方 [ 同意授权检测 ] 按钮,同意 Sa-Token 获取 API 权限进行检测。
' + + "
"; + tipStr += "

不点也没关系 ❤️ ❤️ ❤️,Sa-Token 将努力变得更加完善!😇

"; + tipStr = '
' + tipStr + '
' + 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