Musisz tylko zmodyfikować .authenticate
metoda. Ponieważ połączenie z bazą danych jest (lub powinno być) operacją asynchroniczną, musisz dodać promise
obiekt (patrz dokumentacja Everyauth
).
Zakładając, że masz ORM z danymi użytkownika odpowiadającymi user
obiekt z username
i password
atrybuty (w moim przykładzie użyję silnika mongoose), tak to może wyglądać:
.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 */
})
Nie testowałem tego, ale zgodnie z dokumentacją powinno działać. Pamiętaj, że błędy powinny być przechowywane w tablicy.
Przy okazji:jeśli używasz tylko metody hasła, to nie ma potrzeby, wiesz, używać armaty przeciwko muchom. :) Napisanie własnego (niekoniecznie doskonałego, ale działającego) mechanizmu uwierzytelniania jest naprawdę proste i jeśli nie wiesz, jak to zrobić, powinieneś się tego nauczyć. Przyniesie to korzyści w przyszłości, ponieważ uwierzytelnianie i ogólnie bezpieczeństwo są bardzo ważne w każdej aplikacji internetowej.