Vì vậy, sự hiểu biết của tôi về buổi Flask là tôi có thể sử dụng nó như một cuốn từ điển và thêm giá trị cho một phiên bằng cách thực hiện:Tại sao một số giá trị phiên Flask biến mất khỏi phiên sau khi đóng cửa sổ trình duyệt, nhưng sau đó xuất hiện lại sau đó mà không cần thêm chúng?
phiên [ 'tên chủ chốt'] = 'một số giá trị ở đây'
Và đó công trình khỏe.
Trên tuyến đường, tôi có cuộc gọi của khách hàng sử dụng bài đăng AJAX, tôi chỉ định giá trị cho phiên. Và nó hoạt động tốt. Tôi có thể nhấp vào các trang khác nhau của trang web của tôi và giá trị nằm trong phiên. Tuy nhiên, nếu tôi đóng cửa sổ trình duyệt và sau đó quay trở lại trang web của tôi, giá trị phiên mà tôi đã có trong đó sẽ biến mất.
Điều đó thật lạ và bạn nghĩ rằng vấn đề là phiên không phải là vĩnh viễn. Tôi cũng đã triển khai Flask-Openid và sử dụng phiên để lưu trữ thông tin và rằng hiện vẫn tồn tại nếu tôi đóng cửa sổ trình duyệt và mở lại. Tôi cũng đã kiểm tra cookie sau khi đóng cửa sổ trình duyệt, nhưng trước khi quay lại trang web của tôi và cookie thực sự vẫn còn ở đó.
Một hành vi lạ khác (có thể liên quan) là một số giá trị tôi đã viết cho phiên cho mục đích thử nghiệm sẽ biến mất khi tôi truy cập tuyến đường bưu điện AJAX và gán giá trị chính xác. Vì vậy, đó là lẻ, nhưng những gì là thật kỳ lạ là khi tôi sau đó đóng cửa sổ trình duyệt và mở nó lên một lần nữa, và do đó bị mất giá trị tôi đã cố gắng giữ lại, những người mà tôi bị mất trước đó thực sự trở lại! Chúng không được gán lại vì không có mã trong các tệp Python của tôi để gán lại các giá trị đó.
Dưới đây là một số kết quả đầu ra cho trình trợ giúp làm cho nó rõ ràng hơn. Tất cả chúng đều được xuất ra từ một tuyến đường cho một trang thực, chứ không phải tuyến đường bưu điện AJAX mà tôi đã đề cập ở trên.
Đây là đầu ra sau khi tôi đã gán giá trị tôi muốn lưu trữ trong phiên. Khóa giá trị là 'userid' - tất cả các giá trị khác là các giá trị giả mà tôi đã thêm vào khi cố giải quyết vấn đề này. 'userid': 8 sẽ ở lại trong phiên miễn là tôi không đóng cửa sổ trình duyệt. Tôi có thể truy cập các tuyến đường khác và giá trị sẽ vẫn ở đó giống như vậy.
['session.=', <SecureCookieSession {'userid': 8, 'test_variable_num': 102, 'adding using before request': 'hi', '_permanent': True, 'test_variable_text': 'hi!'}>]
Nếu tôi làm đóng cửa sổ trình duyệt, và quay trở lại trang web, nhưng mà không làm lại theo yêu cầu bài AJAX, tôi nhận được kết quả này:
['session.=', <SecureCookieSession {'adding using before request': 'hi', '_permanent': True, 'yo': 'yo'}>]
Giá trị 'yo' không có trong đầu ra đầu tiên đầu tiên. Tôi không biết nó đến từ đâu. Tôi tìm kiếm mã của tôi cho 'yo' và không có trường hợp nào của tôi gán giá trị đó ở bất kỳ đâu. Tôi nghĩ rằng tôi có thể đã thêm nó vào phiên ngày trước. Vì vậy, nó có vẻ như nó là bền bỉ, nhưng bị ẩn khi các giá trị khác được viết.
Và điều cuối cùng này là tôi truy cập lại tuyến đường bưu điện AJAX và sau đó chuyển đến trang in ra các phím bằng cách sử dụng gỡ lỗi. Cùng công suất, chế độ xuất ra đầu tiên tôi dán ở trên, mà bạn mong đợi, và giá trị 'yo' đã biến mất một lần nữa (nhưng nó sẽ quay trở lại nếu tôi đóng cửa sổ trình duyệt)
['session.=', <SecureCookieSession {'userid': 8, 'test_variable_num': 102, 'adding using before request': 'hi', '_permanent': True, 'test_variable_text': 'hi!'}>]
Tôi đã thử nghiệm này trong cả Chrome và Firefox.
Vì vậy, tôi thấy điều này tất cả kỳ lạ và tôi đoán nó bắt nguồn từ một sự hiểu lầm về cách phiên làm việc. Tôi nghĩ rằng đó là từ điển và tôi có thể viết các giá trị từ điển vào chúng và lấy lại chúng sau này miễn là tôi đặt phiên thành vĩnh viễn và cookie không bị xóa.
Bất kỳ ý tưởng nào tại sao hành vi kỳ lạ này đang xảy ra?