mysql - 如何在我可以从我的网站使用的 node.js 中进行身份验证?

标签 mysql node.js mongodb

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

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

我试过了 https://github.com/jimpick/everyauth-example-password并且有效。

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

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

最佳答案

只需要修改.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 */
})

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

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

关于mysql - 如何在我可以从我的网站使用的 node.js 中进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10812979/

相关文章:

mysql - 查询和分组依据

mysql - 简单查询提取用户没有的所有成就(一对多)

node.js - 如何在具有多个 dyno 的 Heroku 上使用 node-openid?

mongodb - NoSQL(例如 MongoDB)能否取代数据网格解决方案,例如甲骨文一致性

node.js - 一旦保存在 Mongoose 中,如何使某些字段不可更新?

mysql - 如何使用 Excel 中当前的新数据更新 MySQL 表?

javascript - Node 4 和 Node 6 的堆差异

javascript - Proxyquire 不 stub

MongoDB 我们如何获取所有当前打开的游标和它们正在运行的查询?

php - 查找并删除后面的重复记录