2014-11-19 24 views
9

Thực hiện phiên Express và xung đột Phiên làm việc trong ứng dụng Express? Tại sao hay tại sao không?Phiên giao dịch so với phiên PassportJS

Dưới đây là một số mã để phân biệt Express và Passport đối tượng session:

app.use(express.session({})); 
    app.use(passport.session()); 

    app.use(session({ 
     cookie : { 
      maxAge : 60000 
     } 
    })); 

Trả lời

14

Không, họ là hai thứ riêng biệt và họ không mâu thuẫn mà khác. Hơn nữa, passport.session phải được sử dụng sau express.session để hoạt động bình thường.

express.session phần mềm trung gian được sử dụng để truy xuất phiên người dùng từ kho dữ liệu (như Redis). Chúng tôi có thể tìm thấy đối tượng phiên vì Id phiên được lưu trữ trong cookie, được cung cấp cho máy chủ theo mọi yêu cầu.

Sau đó, mục đích của phần mềm trung gian passport.session là để deserialize đối tượng người dùng từ phiên sử dụng chức năng passport.deserializeUser (mà bạn xác định trong cấu hình hộ chiếu của mình). Khi người dùng xác thực chính nó lần đầu tiên, đối tượng người dùng của nó được tuần tự hóa và lưu trữ trong phiên. Trên mỗi yêu cầu sau, phần mềm trung gian deserialize người dùng và populates req.user đối tượng.

Kiểm tra Passpot Configure Guide và câu trả lời SO này: What does passport.session() middleware do? để biết thêm thông tin.

Các vấn đề liên quan