authentication - 用户退出 session 时如何正确删除 cookie?

标签 authentication cookies amazon-cognito

背景:

对于身份验证,我们使用 AWS Cognito。我们的项目包含一个 API 服务器和一个 Web 服务器。在客户端,当用户登录应用程序时,我们将用户名和密码发送到 cognito 实例,该实例返回 JWT 访问 token 。我们在 cookie 中设置访问 token 并将用户重定向到主页。在 http 服务器端,对于私有(private)页面的每个请求,我们都会检查 cookie 并验证 JWT 访问 token 。同样在 API 端,对于每个请求,我们都会检查 cookie 并验证访问 token 。

当用户从应用程序中注销时,我们会删除 cookie 并从 cognito 中注销。这是删除cookie的代码 -

function clearCookie(name: string, domain: string, path: string) {
  const derivedDomain = domain || document.domain;
  const derivedPath = path || "/";
  document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:01 GMT; domain=${derivedDomain}; path=${derivedPath}`;
};

问题:

当用户在退出后按下浏览器的后退按钮时会出现此问题。似乎当用户按下后退按钮时,页面与 cookie 一起从缓存中恢复。由于 JWT 访问 token 仍然有效,因此在用户按下后退按钮后,他们仍然可以进行 api 调用并导航应用程序。

有没有办法解决这个问题?我怎样才能删除cookie,以便按下后退按钮不会恢复cookie?我应该使用任何其他身份验证工作流程来克服这个问题吗?

最佳答案

HttpCookie httpCookie = default(HttpCookie);
int i = 0;
string cookieName = null;
int limit = Request.Cookies.Count - 1;
for (i = 0; i <= limit; i++) 
{
     cookieName = Request.Cookies(i).Name;     
     httpCookie = new HttpCookie(cookieName);    
     httpCookie.Expires = DateTime.Now.AddDays(-1);
     Response.Cookies.Add(httpCookie);
}

关于authentication - 用户退出 session 时如何正确删除 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59342165/

相关文章:

node.js - 用于传递 JWT 的 httpOnly Cookies 与授权 header

javascript - 在 ajax 调用的回显页面中设置 cookie

typescript - AWS-Cognito : Is it possible to edit the User Pool name after creating the User Pool?

amazon-cognito - 认知 : Understanding LimitExceededException

node.js - AWS Cognito 托管 UI - 如何允许 EXTERNAL_PROVIDER 用户创建密码?

python - 即使用户已经登录,也会显示登录页面

delphi - 如何在 Datasnap 服务器方法单元中获取经过身份验证的用户名和密码?

python - 带有谷歌身份工具包的谷歌云端点

.net - 如何从 ClaimsPrincipal 获取 SecurityToken?

javascript - URL 中的 HTML 和 CSS 导致 404 错误(用户代理 = Trident/4.0)