sso登录(单点登录)实现
部分项目需要单点登录(不需要用户输入账户密码可以直接登录)
分析
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("/");}
};