|
@@ -13,6 +13,7 @@ import com.aizuda.core.api.ApiAssert;
|
|
|
import com.baomidou.kisso.common.encrypt.MD5Salt;
|
|
|
import com.baomidou.kisso.enums.TokenOrigin;
|
|
|
import com.baomidou.kisso.security.token.SSOToken;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.AES;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
@@ -21,10 +22,8 @@ import lombok.AllArgsConstructor;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 授权 服务实现类
|
|
@@ -50,6 +49,13 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
, user.getPassword(), loginParam.getPassword()), "登录密码错误");
|
|
|
|
|
|
// 登录信息
|
|
|
+ return loginInfo(request, user);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置登录信息
|
|
|
+ */
|
|
|
+ private Map<String, Object> loginInfo(HttpServletRequest request, SysUser user) {
|
|
|
Map<String, Object> loginInfo = new HashMap<>(4);
|
|
|
loginInfo.put("token", new SSOToken().id(user.getId()).issuer(user.getUsername())
|
|
|
.userAgent(request).origin(TokenOrigin.HTML5).data(new HashMap<>() {{
|
|
@@ -63,4 +69,29 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
return loginInfo;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> tokenLogin(HttpServletRequest request, HttpServletResponse response, LoginParam loginParam) {
|
|
|
+ ApiAssert.fail(StringUtils.isBlank(loginParam.getToken()), "授权票据不能为空");
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 校验票据合法性,Token 为 Base64 URL 加密
|
|
|
+ byte[] bytes = Base64.getUrlDecoder().decode(loginParam.getToken());
|
|
|
+ String text = new String(AES.decrypt(bytes, "AIjOCLBy8D0BlSdC".getBytes(StandardCharsets.UTF_8)));
|
|
|
+ long timestamp = Long.parseLong(text.substring(0, 10));
|
|
|
+ long currentTime = System.currentTimeMillis() / 1000;
|
|
|
+ if ((currentTime - timestamp) > 600) {
|
|
|
+ ApiAssert.fail("授权票据已失效");
|
|
|
+ }
|
|
|
+ } catch (Throwable t) {
|
|
|
+ ApiAssert.fail("授权票据验证失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 固定进入 admin 账号
|
|
|
+ SysUser user = new SysUser();
|
|
|
+ user.setId(0L);
|
|
|
+ user.setUsername("admin");
|
|
|
+ user.setNickName("admin");
|
|
|
+ return loginInfo(request, user);
|
|
|
+ }
|
|
|
+
|
|
|
}
|