【问题标题】:Node express verifying signed cookie节点快递验证签名cookie
【发布时间】:2013-07-04 05:15:54
【问题描述】:

我正在尝试在 Node 的 express 模块中使用已签名的 cookie,并且已阅读文档,但对如何验证它们感到困惑。据我了解,我必须验证服务器上的 cookie。但是,我不清楚我是如何做到的。我会收到cookie,然后呢?我必须运行一个函数来验证它吗?如果有,是什么功能?如果不是,并且它是自动的,如果确实修改了 cookie,我该如何编程?我必须使用什么代码来检查这个?我打算使用这些签名的 cookie 进行用户身份验证。因此,如果我转到一个页面,并希望根据用户是否经过身份验证显示不同的内容,我不知道该怎么做。如果页面在我验证 cookie 之前呈现,我看不出这怎么可能。因此,我假设我必须在呈现页面之前验证 cookie,这导致我提出这个问题,以便弄清楚如何做到这一点。

基本上,我希望做这样的事情:

if(CookieIsVerified)
{
   .....
}
else if (!CookieIsVerified)
{
     .....
}

【问题讨论】:

    标签: javascript html node.js cookies express


    【解决方案1】:

    您不需要自己验证 cookie。如果您使用 cookieParser 中间件,您可以传入一个秘密,该秘密将用于签署 cookie。这意味着没有人可以改变它。

    其次,使用 cookieSession 中间件。这将获取 req.session 中的任何内容并将其序列化到 cookie 中。

    app.use(express.cookieParser('yoursecretkeyhere'));
    app.use(express.cookieSession());
    

    要检查用户是否已通过身份验证,您可以创建自己的中间件来检查当前会话是否已通过身份验证。如果它没有重定向到登录页面或返回 401。此中间件应用于除登录路由之外的所有路由。

    创建一个登录路由,它接受凭据并且不使用上述中间件。在这里,您可以检查用户名/密码或令牌,如果用户是有效用户,则在会话上设置经过身份验证的标志。您可以在上述中间件中检查此标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 2020-10-11
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      相关资源
      最近更新 更多