2010-09-02 16 views
6

Khi người dùng truy cập vào miền của tôi, phiên họp được phát hành bởi django. Khi anh ấy cố gắng làm Oauth với Facebook, anh ấy nhấp vào một nút trên trang web của tôi để chuyển hướng đến Facebook.com. Facebook chuyển hướng trở lại miền của tôi, nhưng tại thời điểm này, phiên của người dùng bị mất và Django dường như đang phát hành một biến phiên mới.Phiên Django bị giảm khi được chuyển hướng từ miền khác

Tôi muốn phiên giảm xuống tồn tại vì tôi phải liên kết khách truy cập với trang web của tôi bằng tài khoản Facebook của anh ấy, nhưng khi phiên bị xóa, người dùng đã đăng nhập đã đăng xuất.

Tôi có một sự nghi ngờ rằng đây có thể là hành vi liên quan đến bảo vệ XSS của django. Làm cách nào để làm cho thông tin người dùng tồn tại khi người dùng rời khỏi trang web của chúng tôi để đăng nhập tại Facebook?

+0

Sự cố của bạn có liên quan gì không với http://docs.djangoproject.com/en/1.2/topics/http/sessions/#browser-length-sessions-vs-persistent-sessions? Ngoài ra, xác định phiên bị giảm. Liệu 'người dùng' vẫn có cookie của nó? – cpf

+0

Phiên bị xóa có nghĩa là cookie id phiên ban đầu sẽ bị xóa và được thay thế bằng một phiên mới. Cảm ơn bạn đã liên kết, có vẻ như cho biết rằng các phiên không nên bị xóa khi người dùng truy cập một trang web mới và quay trở lại tên miền gốc. – Mark

Trả lời

9

Bạn có thể muốn xác nhận rằng cookie có cùng tên miền khi được tạo. Điều đó đôi khi có thể gây ra vấn đề. Nếu bạn truy cập vào trang web www.example.com và các điểm gọi lại OAuth đến example.com, thì có thể bạn có hai cookie riêng biệt, một cho www.example.com và một cho example.com

Bật "Luôn hỏi" trên trình duyệt của bạn và chú ý đến các chi tiết cookie. Đảm bảo rằng giá trị cho trường "Máy chủ lưu trữ:" giống nhau cả hai lần.

Bản sửa lỗi đang nhập một cái gì đó như .example.com cho SESSION_COOKIE_DOMAIN trong tệp settings.py của bạn.

+0

Tôi đã thử đề xuất của bạn và có vẻ như vấn đề đã được giải quyết, cảm ơn! – Mark

+0

Đã bị kẹt trong khoảng 2 giờ x_x. Cảm ơn các giải pháp! – Weaver

+2

Điều này đã xảy ra với tôi bởi vì tôi đã bắt đầu trên 'localhost' và sau đó quay lại' 127.0.0.1'. – Seth

2

Tôi cũng vừa phát hiện ra rằng nếu bạn có hai ứng dụng Django chạy trên cùng một tên miền, để tránh xảy ra xung đột cookie, bạn có thể muốn đặt SESSION_COOKIE_NAME khác nhau cho từng ứng dụng.

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