Du behöver bara ändra .authenticate
metod. Eftersom att ansluta till databasen är (eller borde vara) en asynkron operation, måste du lägga till promise
objekt (se everyauth-dokumentation
).
Förutsatt att du har någon ORM med användardata som motsvarar user
objekt med username
och password
attribut (i mitt exempel använder jag mongoose-motorn), så här kan det se ut:
.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 */
})
Jag testade det inte, men enligt dokumentationen ska det fungera. Kom ihåg att fel är tänkta att hållas i array.
Förresten:om du bara använder lösenordsmetoden, så finns det ingen anledning att, du vet, använda en kanon mot en fluga. :) Att skriva din egen (inte nödvändigtvis perfekt, men fungerande) autentiseringsmekanism är väldigt enkel och om du inte vet hur du gör detta bör du lära dig det. Det kommer att gynnas i framtiden, eftersom autentisering och säkerhet i allmänhet är mycket viktigt i varje webbapp.