Bạn chỉ cần sửa đổi .authenticate
phương pháp. Vì kết nối với cơ sở dữ liệu là (hoặc phải) là một hoạt động không đồng bộ, nên bạn cần thêm promise
đối tượng (xem tài liệu everyauth
).
Giả sử bạn có một số ORM với dữ liệu người dùng tương ứng với user
đối tượng có username
và password
(trong ví dụ của tôi, tôi sẽ sử dụng công cụ mongoose), đây là cách nó có thể trông:
.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 */
})
Tôi đã không kiểm tra nó, nhưng theo tài liệu thì nó sẽ hoạt động. Hãy nhớ rằng lỗi được giữ trong mảng.
Nhân tiện:nếu bạn chỉ sử dụng phương pháp mật khẩu, thì bạn không cần phải sử dụng pháo chống ruồi. :) Việc viết cơ chế xác thực của riêng bạn (không nhất thiết phải hoàn hảo, nhưng hoạt động) thực sự đơn giản và nếu bạn không biết cách làm điều này, bạn nên học nó. Nó sẽ có lợi trong tương lai, vì xác thực và bảo mật nói chung là rất quan trọng trong mọi ứng dụng web.