Bạn nên giới thiệu đoạn mã sau vào ứng dụng của bạn, bên cạnh cấu hình trong những chiến lược:
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(obj, done) {
done(null, obj);
});
Bằng cách này, khi bạn gọi done
chức năng với người sử dụng chứng thực, hộ chiếu sẽ chăm sóc của lưu trữ userId trong cookie. Bất cứ khi nào bạn muốn truy cập userId, bạn có thể tìm thấy nó trong phần yêu cầu. (trong express req["user"]
).
Bạn cũng có thể phát triển chức năng serializeUser
nếu bạn muốn lưu trữ dữ liệu khác trong phiên. Tôi làm theo cách này:
passport.serializeUser(function(user, done) {
done(null, {
id: user["id"],
userName: user["userName"],
email: user["email"]
});
});
Bạn có thể tìm thêm ở đây: http://passportjs.org/docs/configure
tôi có điều này đã i mã của tôi - nhưng tôi cần phải truy cập vào các tập tin cookie về phía khách hàng, sử dụng javascript - có thể như vậy? –
Tôi xin lỗi, tôi không hiểu điều đó từ câu hỏi của bạn. Tôi chỉ phân tích các tập tin cookie trong ứng dụng node.js của tôi và tôi không thấy một bộ bởi passportjs. Kết nối chỉ đặt cookie với sessionId. Phần còn lại của dữ liệu được lưu trữ trên máy chủ. Tôi tin rằng bạn nên tự thiết lập một cookie với các dữ liệu mong muốn và sau đó phân tích nó bằng cách sử dụng javascript trên máy khách. (sử dụng express: [link] (http://expressjs.com/api.html#res.cookie)). – AnduA
Tôi đã tự khắc phục sự cố khi đặt cookie của riêng mình nhưng cảm ơn thông tin của bạn! –