优化:二级认证校验之前必须先通过登录认证校验

This commit is contained in:
click33 2024-05-10 10:55:47 +08:00
parent ea546c7adb
commit 6d4496897d

View File

@ -2672,7 +2672,13 @@ public class StpLogic {
return false;
}
// 2如果缓存中可以查询出指定的键值则代表已认证否则视为未认证
// 2如果此 token 不处于登录状态也将其视为未认证
Object loginId = getLoginIdNotHandle(tokenValue);
if( ! isValidLoginId(loginId) ) {
return false;
}
// 3如果缓存中可以查询出指定的键值则代表已认证否则视为未认证
String value = getSaTokenDao().get(splicingKeySafe(tokenValue, service));
return !(SaFoxUtil.isEmpty(value));
}
@ -2690,8 +2696,14 @@ public class StpLogic {
* @param service 业务标识
*/
public void checkSafe(String service) {
// 1必须先通过登录校验
checkLogin();
// 2再进行二级认证校验
// 如果缓存中可以查询出指定的键值则代表已认证否则视为未认证
String tokenValue = getTokenValue();
if ( ! isSafe(tokenValue, service)) {
String value = getSaTokenDao().get(splicingKeySafe(tokenValue, service));
if(SaFoxUtil.isEmpty(value)) {
throw new NotSafeException(loginType, tokenValue, service).setCode(SaErrorCode.CODE_11071);
}
}