部分项目需要单点登录(不需要用户输入账户密码可以直接登录)
分析
1.判断进来的地址携带的参数,约定好如果username,token(不同项目可以自己约定自己需要的)则判断为需要进行单点登录
2.调单点登录的api,最好跟账户密码登录是不同的api
代码
import { getQueryMap } from "@pureadmin/utils";
const getSSoKey = () => {
//增加逻辑 先从缓存中获取Token 不存在则调用登录去获取 存在直接进入系统
const params = getQueryMap(location.href) as SSODataInfo<Date> | any;
let token = localStorage.getItem("AccessToken");
let SSOToken = localStorage.getItem("SSOToken");
if (token == null || (params.Token && SSOToken != params.Token)) {
let ssoParams = {
Token: params.Token,
UserName: params.UserName,
};
ssoLogin(ssoParams).then((res) => {
if (res.data.code == 200) {
localStorage.setItem("SSOToken", params.Token);
localStorage.setItem("UserName", res.data.data.username);
localStorage.setItem("RefreshToken", res.data.data.refresh_token);
localStorage.setItem("AccessToken", res.data.data.access_token);
localStorage.setItem("Expires", res.data.data.expires);
ElMessage({
message: "Login succeeded",
type: "success",
});
window.location.replace("/");
}
});
} else {
ElMessage({
message: "Login succeeded",
type: "success",
});
window.location.replace("/");
}
};