Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment faire l'authentification dans node.js que je peux utiliser depuis mon site Web ?

Il vous suffit de modifier .authenticate méthode. Étant donné que la connexion à la base de données est (ou devrait être) une opération asynchrone, vous devez ajouter promise objet (voir documentation everuauth ).

En supposant que vous ayez un ORM avec des données utilisateur correspondant à user objet avec username et password attributs (dans mon exemple, j'utiliserai le moteur de mangouste), voici à quoi cela peut ressembler :

.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 */
})

Je ne l'ai pas testé, mais d'après la documentation, cela devrait fonctionner. N'oubliez pas que les erreurs sont censées être conservées dans un tableau.

Au fait :si vous utilisez uniquement la méthode du mot de passe, vous n'avez pas besoin d'utiliser un canon contre une mouche. :) Écrire votre propre mécanisme d'authentification (pas nécessairement parfait, mais fonctionnel) est vraiment simple et si vous ne savez pas comment faire cela, vous devriez l'apprendre. Cela en bénéficiera à l'avenir, car l'authentification et la sécurité en général sont très importantes dans chaque application Web.