我使用node.js和Express以及connect-auth来验证用户。
这是请求/index时的验证:
if(req.isAuthenticated()) {
res.redirect('/dashboard');
} else {
res.render('index', { layout: 'nonav' });
}
但是,在注销并返回f. e.之后。'/dashboard',我可以看到 Jmeter 板。
如何对每个请求进行身份验证检查,以确保始终有一个有效的用户?
我没有任何问题的身份验证,一切正常!我需要一个解决方案,检查每个路由/请求,如果有一个有效的用户,而不是把一个函数或if语句中的路由实现,因为整个应用程序需要一个有效的用户无论如何。Express-Authentication-Example在路由定义中使用了“restrict”,这很接近,但对于许多路由,它很容易被遗忘。
3条答案
按热度按时间doinxwow1#
如果你在需要认证的路由之前定义
all
路由,而在不需要认证的路由之后定义all
路由(例如主页、登录等),那么它应该只影响需要它的路由。或者,您可以使用RegExp而不是'*'
,这将包括需要身份验证的子路径或路径列表。另一种选择是创建一个函数,包含在每个需要auth的路由中:
8cdiaqws2#
您可以使用
connect
提供的sessions
机制。将以下代码放入app.configure()
以启用它:之后,您将能够使用
req.session
对象(每个请求都不同)来存储身份验证数据(或其他任何内容)。因此,您的示例代码看起来像这样:身份验证将如下所示:
注销:
更多信息可以在here中找到。
yacmzcpb3#
另一种方法是使用中间件功能。(CoffeeScript中的示例。)
这将在每个请求上工作,而不必触及路由。