Node表示验证已签名的cookie

时间:2013-07-06 05:50:25

标签: javascript html node.js cookies express

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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