【问题标题】:How to do authentication in node.js that I can use from my website?如何在我可以从我的网站使用的 node.js 中进行身份验证?
【发布时间】:2012-06-04 11:50:01
【问题描述】:

我想要一个 Node.js 服务来验证我网站的用户。我该怎么做?

我想使用简单的密码方法来实现 Everyauth 身份验证,而不是 OpenID。

我试过https://github.com/jimpick/everyauth-example-password,它工作正常。

我想用数据库来存储。此脚本不使用数据库。我过去使用过 MySQL,所以我更喜欢它,但我也可以使用其他任何东西,比如 MongoDB。

我只想将数据库添加到我的脚本中。请帮忙。

【问题讨论】:

    标签: mysql node.js mongodb


    【解决方案1】:

    只需要修改.authenticate方法即可。由于连接数据库是(或应该是)异步操作,因此您需要添加promise 对象(参见everyauth documentation)。

    假设您有一些 ORM,其中用户数据对应于具有 usernamepassword 属性的 user 对象(在我的示例中,我将使用 mongoose 引擎),这可能是这样的:

    .authenticate( function (login, password) {
        var promise = this.Promise(); /* setup promise object */
    
        /* asynchrnously connect to DB and retrieve the data for authentication */
        db.find({ username:login }, function(err, user) {
            if (err)
                return promise.fulfill([err]);
            if ((!user) || (user.password != password))
                return promise.fulfill(['Incorrect username or password!']);
            promise.fulfill(user);
        });
    
        return promise; /* return promise object */
    })
    

    我没有测试它,但根据文档它应该可以工作。请记住,错误应该保存在数组中。

    顺便说一句:如果您只使用密码方法,那么您知道,没有必要使用大炮对付苍蝇。 :) 编写自己的(不一定是完美的,但可以工作的)身份验证机制非常简单,如果您不知道如何做到这一点,您应该学习它。它将在未来受益,因为一般而言,身份验证和安全性在每个 Web 应用程序中都非常重要。

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 2010-11-13
      • 2021-06-25
      • 2011-03-30
      相关资源
      最近更新 更多