【发布时间】:2015-11-14 03:32:59
【问题描述】:
如何确定哪个用户登录了 express js 应用程序?我想确定谁在我的服务器程序中发送请求。
【问题讨论】:
-
您的用户登录网站了吗?如果是这样,应该有一个登录cookie。如果没有,那么您将需要创建一个登录系统,以便您可以识别哪个用户是哪个。
标签: javascript node.js cookies express web
如何确定哪个用户登录了 express js 应用程序?我想确定谁在我的服务器程序中发送请求。
【问题讨论】:
标签: javascript node.js cookies express web
您可以使用req.user
exports.some_method = function(req, res) {
var user = req.user;
//do something
};
但您必须使用users.requiresLogin 才能拥有持久用户
app.route('/model/:modelId').get(users.requiresLogin, my_controller.some_method)
它的实现非常简单
exports.requiresLogin = function(req, res, next) {
if (!req.isAuthenticated()) {
return res.status(401).send({
message: 'User is not logged in'
});
}
next();
};
它确实是基于会话的实现,但仍然很好。
就是这样
您必须使用通过 cookie 检测当前用户的中间件
确实更复杂,你必须编写自己的实现
但是有很多插件,比如护照,可以通过你的字段验证用户。也可以序列化成req.user,反之亦然
但我强烈建议检查 MeanJS 堆栈实现,它很容易理解。顾名思义,它是 MongoExpressAngularNode,所以它是基于 express 的堆栈。
这取决于您使用的是哪种身份验证模式,如果是 REST,那么您必须将所有请求中的令牌传递给服务器,以便服务器检查 db 并使用相应的令牌获取用户。如果它是基于会话的,那么您可以简单地使用任何基于会话的插件。但是思路是一样的,登录时,将用户序列化到会话表,设置cookie,当接收到请求时,从请求者那里获取cookie,从会话表中反序列化,你现在就得到了用户
【讨论】: