确定http请求的发件人

时间:2015-11-13 19:14:48

标签: javascript node.js cookies express web

如何确定哪个用户已在快速js应用程序中登录?我想确定谁在我的服务器程序中发送请求。

1 个答案:

答案 0 :(得分:1)

MeanJS堆栈

您可以使用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();
};

它确实是基于会话的实现,但仍然很好。这就是它

Pure expressJS

您必须使用能够通过其cookie检测当前用户的中间件 它确实更复杂,你必须编写自己的实现 但是有很多插件,比如护照,会通过你的字段验证用户。也可以序列化为req.user,反之亦然

但我强烈建议检查MeanJS堆栈实现,这很容易理解。顾名思义,它是MongoExpressAngularNode,所以它是基于表达式的堆栈。

更多

这取决于您使用的是哪种auth架构,如果是REST,那么您必须将所有请求中的令牌传递给服务器,以便服务器检查db并获取具有相应令牌的用户。如果它是基于会话的,那么您可以简单地使用任何基于会话的插件。但是这个想法是一样的,当登录时,将用户序列化为会话表,设置cookie,当接收请求从请求者获取cookie,从会话表反序列化,你现在有用户