sql >> Databáze >  >> RDS >> Mysql

Jak provést autentizaci v node.js, kterou mohu použít ze svého webu?

Potřebujete pouze upravit .authenticate metoda. Protože připojení k databázi je (nebo by mělo být) asynchronní operace, musíte přidat promise objekt (viz dokumentace everyauth ).

Za předpokladu, že máte nějaké ORM s uživatelskými daty odpovídajícími user objekt s username a password atributy (v mém příkladu použiji mongoose engine), může to vypadat takto:

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

Netestoval jsem to, ale podle dokumentace by to mělo fungovat. Pamatujte, že chyby mají být uloženy v poli.

Mimochodem:pokud používáte pouze metodu hesla, pak není třeba, víte, používat dělo proti mouše. :) Psaní vlastního (ne nutně dokonalého, ale fungujícího) autentizačního mechanismu je opravdu jednoduché a pokud nevíte, jak na to, měli byste se to naučit. V budoucnu to bude přínosné, protože autentizace a bezpečnost obecně jsou v každé webové aplikaci velmi důležité.




  1. Jaký je nejlepší způsob dynamického výběru názvu tabulky za běhu?

  2. Jak používat SUBSTRING() v MySQL

  3. Uživatelská oprávnění PostgreSQL

  4. Jak zjistit průměr rozdílů posledních N čtení sloupce PHP MySQL