2013-04-11 23 views
6

Tôi có trường hợp sử dụng tiếp theo:Quản lý phiên Tomcat/mùa xuân cho người dùng ẩn danh

Chúng tôi có cửa hàng nơi người dùng có thể chọn một số hàng và sau đó mua chúng. Anh ta có thể thêm hàng vào giỏ hàng của mình trước khi đăng nhập vào ứng dụng. Tất cả các mục này phải được lưu trữ trong phiên của anh ấy. Khi người dùng nhấp vào nút "trả tiền", chúng tôi sẽ yêu cầu thông tin đăng nhập/thẻ/v.v.

Vấn đề của tôi: Khi tôi đăng nhập trước khi thêm các mục vào giỏ hàng, tất cả đều hoạt động chính xác. Nhưng khi tôi cố gắng thêm các mục vào giỏ hàng là người dùng ẩn danh, các mục không được lưu trữ. Tôi luôn nhận được JSESSIONID khác nhau sau khi làm mới mỗi trang là người dùng ẩn danh.

Tôi quyết định tạo ứng dụng đơn giản minh họa sự cố của tôi. Tôi nghĩ rằng nó không thể được cố định mà không có nguồn của tôi.

Đây là ứng dụng của tôi:

https://github.com/AlexTestAccount/simple_test

Nó rất đơn giản. Nó chỉ có một người kiểm soát và đậu phiên, nơi tôi cố gắng lưu một cái gì đó.

Đối với chạy nó, bạn cần gradle, tomcat và xác định CATALINA_HOME biến enviropment, hơn bạn có thể sử dụng:

gradle triển khai

tái bút: Xin lỗi vì tiếng

Trả lời

1

Enable gỡ lỗi mức độ đăng nhập của tôi cho org.springframework.security.web.authentication.session.SessionFixationProtectionStrategy

Có phải là một tuyên bố đăng nhập khi bạn đăng nhập:

>Invalidating session with Id '<originalSessionId>' <and : without> migrating attributes 

Nếu nó in "không có thuộc tính di cư" sau đó bạn cần phải cấu hình securitys mùa xuân SessionFixationProtectionStrategy.migrateSessionAttributes đến true (nhưng điều này phải là mặc định)

Một vấn đề khác có thể là, mà tomcat thay đổi phiên khi bạn chuyển từ http sang https. Để xác minh rằng đây là vấn đề: trước tiên hãy chuyển sang https (KHÔNG đăng nhập) và mục vào giỏ hàng của bạn và sau đó kiểm tra xem chúng có biến mất hay không. Nhưng tomcat nên normaly duy trì nội dung phiên trong khi chuyển đổi từ http sang https (nhưng không phải là cách khác xung quanh).

+0

Tôi sử dụng giao thức http và không chuyển từ http sang https. – Alex

+0

Bạn có tìm thấy câu lệnh tường trình không? – Ralph

+0

SessionFixationProtectionStrategy không được gọi khi tôi làm mới trang. – Alex

0

Xin lỗi, đó là vấn đề môi trường. Tôi chỉ xóa tất cả cookie của mình cho localhost và bây giờ tất cả đều hoạt động.

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