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é.