3

自分の Web サイトのユーザーを認証する Node.js サービスが必要です。これどうやってするの?

OpenID ではなく、単純なパスワード方式を使用して Everyauth 認証を実装したいと考えています。

https://github.com/jimpick/everyauth-example-passwordを試してみましたが、うまくいきました。

データベースを使用して保存したい。このスクリプトはデータベースを使用しません。私は過去に MySQL を使用したことがあるので、それを好みますが、MongoDB などの他のものでも問題ありません。

スクリプトにデータベースを追加したいだけです。助けてください。

4

1 に答える 1

3

.authenticateメソッドを変更するだけです。データベースへの接続は非同期操作である (または非同期操作であるべき) ため、promiseオブジェクトを追加する必要があります ( everyauth のドキュメントを参照)。

および属性をuser持つオブジェクトに対応するユーザー データを持つ ORM があると仮定すると(この例では、mongoose エンジンを使用します)、これは次のようになります。usernamepassword

.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 アプリで非常に重要であるため、将来的にはメリットがあります。

于 2012-05-30T09:11:14.733 に答える