使用Amazon Cognito无法正常登出:残留Cookie导致自动登录
调用Cognito全局登出端点
直接构造跳转URL到Cognito的logout端点,带上client_id和logout_uri(这个跳转地址必须提前在用户池客户端的注销URL列表里配置好)。这个操作会彻底清除Cognito在浏览器中留下的会话Cookie,避免自动登录。
示例URL:https://你的用户池域名.auth.区域.amazoncognito.com/logout?client_id=你的客户端ID&logout_uri=https://你的应用域名.com/登出成功页面清理应用本地存储的凭证
如果用了Amplify SDK,登出时别只调用普通的Auth.signOut(),要加上global: true参数:Auth.signOut({ global: true }),它会同时清除本地存储的token和触发Cognito的全局登出。要是自定义实现的登录逻辑,手动删掉localStorage或sessionStorage里存的id_token、access_token这些Cognito相关凭证。检查用户池客户端的注销配置
去AWS控制台的Cognito用户池客户端设置里,把注销URL填对,还要勾选启用注销后重定向。只有配置正确的注销地址,Cognito才会在全局登出时正确清除Cookie并跳转,不会留尾巴。前端手动清除Cookie(兜底方案)
要是前面的方法还没解决,就在前端登出时用JS强制清除所有Cookie,尤其是带CognitoIdentityServiceProvider标识的。示例代码:document.cookie.split(";").forEach(c => { document.cookie = c.replace(/^ +/, "").replace(/=.*/, `=;expires=${new Date().toUTCString()};path=/`); });注意要保证Cookie的路径和域名和Cognito设置的一致,不然可能清不掉跨域的Cookie。
内容的提问来源于stack exchange,提问作者user737163
相关产品推荐
相关产品推荐

