0

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

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

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

1 回答 1

3

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

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

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

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

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

于 2013-07-06T08:00:22.183 回答