【问题标题】:Authentication for a SPA and a node.js serverSPA 和 node.js 服务器的身份验证
【发布时间】:2012-07-17 21:58:45
【问题描述】:

我有一个基于 express 构建的非常简单的 node.js 应用程序,它一直在使用会话内存存储处理身份验证。基本上用户通过以下方式登录:

app.post('/sessions', function(req, res) {
            // check username/password and if valid set authenticated to true
        if (authenticated){
            req.session.user = req.body.username;
                } ...
});

然后在来自浏览器的每次调用中,都会调用一个 requiresLogin 中间件函数,该函数会检查会话上的用户属性是否已设置。

我现在正在将应用程序转换为基本上只提供可能会或可能不会在浏览器中使用的服务,因此我正在考虑更改系统,以便将发布到 /getToken 而不是使用 cookie/会话(而不是 /sessions),它将返回与用户帐户关联的临时随机令牌,然后可以在一段时间内使用该令牌来访问服务。然后,使用该服务需要在每个调用中包含一个有效的令牌。 (我认为这比每次都传递用户名/密码要好,这样密码就不必在调用获取令牌后存储在客户端计算机的内存中?)

这样的系统基本上会与上述当前系统一样安全吗,还是有更标准/更安全的方法来处理这个问题?处理此类事情的标准方法是什么?

提前感谢您的帮助!

【问题讨论】:

    标签: javascript node.js authentication express


    【解决方案1】:

    您正在寻找的东西称为 HMAC,有一篇很棒的文章 here 可以获取有关如何为您的服务实施的想法。

    关于基于会话的安全性是否比公钥/私钥对更安全,这一点引起了广泛的争论,并且实际上取决于实现/应用程序。在您的情况下,由于您希望在面向公众的 API 上按请求进行身份验证,因此 HMAC 是可行的方法。

    【讨论】:

    • 谢谢,那是一篇非常有趣的文章!
    猜你喜欢
    • 2017-05-29
    • 2014-03-13
    • 2017-11-19
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多