【问题标题】:Determine the sender of http request确定http请求的发送者
【发布时间】:2015-11-14 03:32:59
【问题描述】:

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

【问题讨论】:

  • 您的用户登录网站了吗?如果是这样,应该有一个登录cookie。如果没有,那么您将需要创建一个登录系统,以便您可以识别哪个用户是哪个。

标签: javascript node.js cookies express web


【解决方案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();
};

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

纯 expressJS

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

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

更多

这取决于您使用的是哪种身份验证模式,如果是 REST,那么您必须将所有请求中的令牌传递给服务器,以便服务器检查 db 并使用相应的令牌获取用户。如果它是基于会话的,那么您可以简单地使用任何基于会话的插件。但是思路是一样的,登录时,将用户序列化到会话表,设置cookie,当接收到请求时,从请求者那里获取cookie,从会话表中反序列化,你现在就得到了用户

【讨论】:

    猜你喜欢
    • 2016-07-03
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多