mirror of
https://gitee.com/dromara/sa-token.git
synced 2024-11-29 18:37:49 +08:00
新增 StpLogic#getOrCreateLoginSession 方法,获取指定账号 id 的登录会话数据,如果获取不到则创建并返回
This commit is contained in:
parent
8235fe7633
commit
a1560ce0a7
@ -37,7 +37,6 @@ import cn.dev33.satoken.util.SaTokenConsts;
|
|||||||
import cn.dev33.satoken.util.SaValue2Box;
|
import cn.dev33.satoken.util.SaValue2Box;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
@ -591,6 +590,20 @@ public class StpLogic {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取指定账号 id 的登录会话数据,如果获取不到则创建并返回
|
||||||
|
*
|
||||||
|
* @param id 账号id,建议的类型:(long | int | String)
|
||||||
|
* @return 返回会话令牌
|
||||||
|
*/
|
||||||
|
public String getOrCreateLoginSession(Object id) {
|
||||||
|
String tokenValue = getTokenValueByLoginId(id);
|
||||||
|
if(tokenValue == null) {
|
||||||
|
tokenValue = createLoginSession(id, new SaLoginModel());
|
||||||
|
}
|
||||||
|
return tokenValue;
|
||||||
|
}
|
||||||
|
|
||||||
// --- 注销
|
// --- 注销
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -224,7 +224,17 @@ public class StpUtil {
|
|||||||
public static String createLoginSession(Object id, SaLoginModel loginModel) {
|
public static String createLoginSession(Object id, SaLoginModel loginModel) {
|
||||||
return stpLogic.createLoginSession(id, loginModel);
|
return stpLogic.createLoginSession(id, loginModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取指定账号 id 的登录会话数据,如果获取不到则创建并返回
|
||||||
|
*
|
||||||
|
* @param id 账号id,建议的类型:(long | int | String)
|
||||||
|
* @return 返回会话令牌
|
||||||
|
*/
|
||||||
|
public static String getOrCreateLoginSession(Object id) {
|
||||||
|
return stpLogic.getOrCreateLoginSession(id);
|
||||||
|
}
|
||||||
|
|
||||||
// --- 注销
|
// --- 注销
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -215,6 +215,16 @@ public class StpUserUtil {
|
|||||||
return stpLogic.createLoginSession(id, loginModel);
|
return stpLogic.createLoginSession(id, loginModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取指定账号 id 的登录会话数据,如果获取不到则创建并返回
|
||||||
|
*
|
||||||
|
* @param id 账号id,建议的类型:(long | int | String)
|
||||||
|
* @return 返回会话令牌
|
||||||
|
*/
|
||||||
|
public static String getOrCreateLoginSession(Object id) {
|
||||||
|
return stpLogic.getOrCreateLoginSession(id);
|
||||||
|
}
|
||||||
|
|
||||||
// --- 注销
|
// --- 注销
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,6 +4,7 @@ import cn.dev33.satoken.context.SaHolder;
|
|||||||
import cn.dev33.satoken.oauth2.SaOAuth2Manager;
|
import cn.dev33.satoken.oauth2.SaOAuth2Manager;
|
||||||
import cn.dev33.satoken.oauth2.config.SaOAuth2ServerConfig;
|
import cn.dev33.satoken.oauth2.config.SaOAuth2ServerConfig;
|
||||||
import cn.dev33.satoken.oauth2.processor.SaOAuth2ServerProcessor;
|
import cn.dev33.satoken.oauth2.processor.SaOAuth2ServerProcessor;
|
||||||
|
import cn.dev33.satoken.oauth2.strategy.SaOAuth2Strategy;
|
||||||
import cn.dev33.satoken.oauth2.template.SaOAuth2Util;
|
import cn.dev33.satoken.oauth2.template.SaOAuth2Util;
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import cn.dev33.satoken.util.SaResult;
|
import cn.dev33.satoken.util.SaResult;
|
||||||
@ -56,6 +57,12 @@ public class SaOAuth2ServerController {
|
|||||||
return new ModelAndView("confirm.html", map);
|
return new ModelAndView("confirm.html", map);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 重写 AccessToken 创建策略,返回会话令牌
|
||||||
|
SaOAuth2Strategy.instance.createAccessToken = (clientId, loginId, scopes) -> {
|
||||||
|
System.out.println("----返回会话令牌");
|
||||||
|
return StpUtil.getOrCreateLoginSession(loginId);
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -212,6 +212,16 @@ public class StpUserUtil {
|
|||||||
return stpLogic.createLoginSession(id, loginModel);
|
return stpLogic.createLoginSession(id, loginModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取指定账号 id 的登录会话数据,如果获取不到则创建并返回
|
||||||
|
*
|
||||||
|
* @param id 账号id,建议的类型:(long | int | String)
|
||||||
|
* @return 返回会话令牌
|
||||||
|
*/
|
||||||
|
public static String getOrCreateLoginSession(Object id) {
|
||||||
|
return stpLogic.getOrCreateLoginSession(id);
|
||||||
|
}
|
||||||
|
|
||||||
// --- 注销
|
// --- 注销
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,7 +27,7 @@ public void configOAuth2Server(SaOAuth2ServerConfig oauth2Server) {
|
|||||||
// 重写 AccessToken 创建策略,返回会话令牌
|
// 重写 AccessToken 创建策略,返回会话令牌
|
||||||
SaOAuth2Strategy.instance.createAccessToken = (clientId, loginId, scopes) -> {
|
SaOAuth2Strategy.instance.createAccessToken = (clientId, loginId, scopes) -> {
|
||||||
System.out.println("----返回会话令牌");
|
System.out.println("----返回会话令牌");
|
||||||
return StpUtil.createLoginSession(loginId);
|
return StpUtil.getOrCreateLoginSession(loginId);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,25 @@ public class SaOAuth2DataLoaderImpl implements SaOAuth2DataLoader {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
3、在 `application.yml` 配置文件中配置 jwt 生成秘钥:
|
||||||
|
|
||||||
|
<!---------------------------- tabs:start ---------------------------->
|
||||||
|
<!------------- tab:yaml 风格 ------------->
|
||||||
|
``` yaml
|
||||||
|
sa-token:
|
||||||
|
# jwt秘钥
|
||||||
|
jwt-secret-key: asdasdasifhueuiwyurfewbfjsdafjk
|
||||||
|
```
|
||||||
|
<!------------- tab:properties 风格 ------------->
|
||||||
|
``` properties
|
||||||
|
# jwt秘钥
|
||||||
|
sa-token.jwt-secret-key: asdasdasifhueuiwyurfewbfjsdafjk
|
||||||
|
```
|
||||||
|
<!---------------------------- tabs:end ---------------------------->
|
||||||
|
|
||||||
|
注:为了安全起见请不要直接复制官网示例这个字符串(随便按几个字符就好了)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 2、测试
|
### 2、测试
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user