diff --git a/README.md b/README.md
index 4b41f21c..a3cd500a 100644
--- a/README.md
+++ b/README.md
@@ -197,6 +197,11 @@ Sa-OAuth2 模块基于 [RFC-6749 标准](https://tools.ietf.org/html/rfc6749)
- **[ TLog ]**:[ 一个轻量级的分布式日志标记追踪神器](https://gitee.com/dromara/TLog)
+## 贡献者名单
+感谢每一个为 Sa-Token 贡献代码的小伙伴
+
+[![Giteye chart](https://chart.giteye.net/gitee/dromara/sa-token/CGZ7GT8E.png)](https://giteye.net/chart/CGZ7GT8E)
+
## 交流群
QQ交流群:1群:1002350610 (已满) 、
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckPermission.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckPermission.java
index 7abe3b86..1f2d5165 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckPermission.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckPermission.java
@@ -45,6 +45,8 @@ public @interface SaCheckPermission {
* 例2: orRole = {"admin", "manager", "staff"},具有三个角色其一即可
* 例3: orRole = {"admin, manager, staff"},必须三个角色同时具备
*
+ *
+ * @return /
*/
String[] orRole() default {};
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextDefaultImpl.java
index fbc95068..d3f10178 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextDefaultImpl.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/SaTokenContextDefaultImpl.java
@@ -10,7 +10,7 @@ import cn.dev33.satoken.exception.SaTokenException;
*
*
* 一般情况下框架会为你自动注入合适的上下文处理器,如果代码断点走到了此默认实现类,
- * 说明你引入的依赖有问题或者错误的调用了Sa-Token的API, 请在[在线开发文档 > 附录 > 常见问题排查] 中按照提示进行排查
+ * 说明你引入的依赖有问题或者错误的调用了Sa-Token的API, 请在[在线开发文档 → 附录 → 常见问题排查] 中按照提示进行排查
*
*
* @author kong
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaCookie.java b/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaCookie.java
index 33893861..4db3e621 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaCookie.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/context/model/SaCookie.java
@@ -88,6 +88,7 @@ public class SaCookie {
/**
* @param name 名称
+ * @return 对象自身
*/
public SaCookie setName(String name) {
this.name = name;
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouter.java b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouter.java
index 9e668b1f..cde5ea38 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouter.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouter.java
@@ -253,6 +253,7 @@ public class SaRouter {
* 路由匹配,如果匹配成功则执行认证函数
* @param pattern 路由匹配符
* @param fun 要执行的校验方法
+ * @return /
*/
public static SaRouterStaff match(String pattern, SaFunction fun) {
return new SaRouterStaff().match(pattern, fun);
@@ -262,6 +263,7 @@ public class SaRouter {
* 路由匹配,如果匹配成功则执行认证函数
* @param pattern 路由匹配符
* @param fun 要执行的校验方法
+ * @return /
*/
public static SaRouterStaff match(String pattern, SaParamFunction fun) {
return new SaRouterStaff().match(pattern, fun);
@@ -272,6 +274,7 @@ public class SaRouter {
* @param pattern 路由匹配符
* @param excludePattern 要排除的路由匹配符
* @param fun 要执行的方法
+ * @return /
*/
public static SaRouterStaff match(String pattern, String excludePattern, SaFunction fun) {
return new SaRouterStaff().match(pattern, excludePattern, fun);
@@ -282,6 +285,7 @@ public class SaRouter {
* @param pattern 路由匹配符
* @param excludePattern 要排除的路由匹配符
* @param fun 要执行的方法
+ * @return /
*/
public static SaRouterStaff match(String pattern, String excludePattern, SaParamFunction fun) {
return new SaRouterStaff().match(pattern, excludePattern, fun);
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouterStaff.java b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouterStaff.java
index 75018149..63d1974f 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouterStaff.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/router/SaRouterStaff.java
@@ -250,6 +250,7 @@ public class SaRouterStaff {
* 路由匹配,如果匹配成功则执行认证函数
* @param pattern 路由匹配符
* @param fun 要执行的校验方法
+ * @return /
*/
public SaRouterStaff match(String pattern, SaFunction fun) {
return this.match(pattern).check(fun);
@@ -259,6 +260,7 @@ public class SaRouterStaff {
* 路由匹配,如果匹配成功则执行认证函数
* @param pattern 路由匹配符
* @param fun 要执行的校验方法
+ * @return /
*/
public SaRouterStaff match(String pattern, SaParamFunction fun) {
return this.match(pattern).check(fun);
@@ -269,6 +271,7 @@ public class SaRouterStaff {
* @param pattern 路由匹配符
* @param excludePattern 要排除的路由匹配符
* @param fun 要执行的方法
+ * @return /
*/
public SaRouterStaff match(String pattern, String excludePattern, SaFunction fun) {
return this.match(pattern).notMatch(excludePattern).check(fun);
@@ -279,6 +282,7 @@ public class SaRouterStaff {
* @param pattern 路由匹配符
* @param excludePattern 要排除的路由匹配符
* @param fun 要执行的方法
+ * @return /
*/
public SaRouterStaff match(String pattern, String excludePattern, SaParamFunction fun) {
return this.match(pattern).notMatch(excludePattern).check(fun);
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java
index 0ab0f0c5..e8d7452d 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java
@@ -1619,7 +1619,7 @@ public class StpLogic {
* 判断:集合中是否包含指定元素(模糊匹配)
* @param list 集合
* @param element 元素
- * @return
+ * @return /
*/
public boolean hasElement(List list, String element) {
return SaStrategy.me.hasElement.apply(list, element);
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java b/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java
index ca155b98..646e4f42 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java
@@ -15,17 +15,16 @@ import cn.dev33.satoken.session.SaSession;
* Sa-Token 策略对象
*
* 此类统一定义框架内的一些关键性逻辑算法,方便开发者进行按需重写,例:
+ *
*
// SaStrategy全局单例,所有方法都用以下形式重写
- SaStrategy.me.setCreateToken((loginId, loginType) -> {
+ SaStrategy.me.setCreateToken((loginId, loginType) -》 {
// 自定义Token生成的算法
return "xxxx";
});
*
- *
*
* @author kong
- * @param
*
*/
@SuppressWarnings("deprecation")
diff --git a/sa-token-doc/doc/README.md b/sa-token-doc/doc/README.md
index c986dca0..c4e66964 100644
--- a/sa-token-doc/doc/README.md
+++ b/sa-token-doc/doc/README.md
@@ -157,6 +157,10 @@ StpUtil.switchTo(10044); // 将当前会话身份临时切换
- **[ TLog ]**:[ 一个轻量级的分布式日志标记追踪神器](https://gitee.com/dromara/TLog)
+## 贡献者名单
+感谢每一个为 Sa-Token 贡献代码的小伙伴
+
+[![Giteye chart](https://chart.giteye.net/gitee/dromara/sa-token/CGZ7GT8E.png)](https://giteye.net/chart/CGZ7GT8E)
## 交流群
QQ交流群:1群:1002350610 (已满) 、
diff --git a/sa-token-doc/doc/use/jur-auth.md b/sa-token-doc/doc/use/jur-auth.md
index 58333e04..e38f8cde 100644
--- a/sa-token-doc/doc/use/jur-auth.md
+++ b/sa-token-doc/doc/use/jur-auth.md
@@ -145,6 +145,8 @@ StpUtil.hasPermission("index.html"); // false
思路:如此精确的范围控制只依赖后端已经难以完成,此时需要前端进行一定的逻辑判断
+如果是前后端一体项目,可以参考:[Thymeleaf 标签方言](/plugin/thymeleaf-extend),如果是前后端分离项目,则:
+
1. 在登录时,把当前账号拥有的所有权限码一次性返回给前端
2. 前端将权限码集合保存在`localStorage`或其它全局状态管理对象中
3. 在需要权限控制的按钮上,使用js进行逻辑判断,例如在`vue`框架中我们可以使用如下写法: