问题描述
应用流程
登录表格位于 xyz.com。登录后,用户将被重定向到 subdomain1.xyz.com。对于 Google 授权,用户转到 subdomain1.xyz.com/profile 并使用 Google 登录。
场景
我使用用户 A 登录到我的系统,我还向用户 A 授权了 Google。因此,如果我注销并使用同一用户再次登录,则不需要谷歌授权。但是如果在我从用户 A 注销后使用用户 B 登录,那么即使我没有授权他,Google Api 仍然显示用户 B 已登录。
我的方法
为此,我将 last_login_id 保存在 cookie 中
export function* loggedInUserFetched(action) {
if (window.gapi && cookies.load("last_user_id") != action.payload?.id) {
window.gapi.load("client:auth2",() => {
window.gapi.auth2
.init({
apiKey: GoogleKeys.API_KEY,clientId: GoogleKeys.CLIENT_ID,redirectUri: "",scope: GoogleKeys.ScopES,})
.then((r) => {
const googleAuth = window.gapi.auth2.getAuthInstance();
if (googleAuth) googleAuth.signOut().catch((e) => console.error(e));
});
});
}
cookies.save("last_user_id",action.payload?.id,{
domain: homeUrl,path: "/",});
yield put({ type: SET_USER,payload: action.payload });
}
并将其与新登录的用户 ID 进行比较,如果它们不匹配,我将退出谷歌。但我的方法的问题是,有时是注销,有时不是。
谷歌在不同用户之间持久授权,这意味着用户 A id 应该在登录前附加到谷歌(但不知道如何)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)