Đây là kịch bản:Cách xử lý đúng HttpAntiForgeryException trong ứng dụng MVC 4
Tôi có trang đăng nhập, khi người dùng ký tên, nó được chuyển hướng đến trang ứng dụng tại nhà. Sau đó, người dùng đang sử dụng nút quay lại trình duyệt và giờ đây anh ấy đang ở trên trang đăng nhập. Anh ấy cố gắng đăng nhập lại nhưng giờ đây có một ngoại lệ được ném:
HttpAntiForgeryException (0x80004005): Mã thông báo chống giả mạo được cung cấp cho người dùng "", nhưng người dùng hiện tại là "userName".
Tôi biết điều này có liên quan đến bộ nhớ đệm. Tôi vô hiệu hóa bộ nhớ đệm trình duyệt cho action login sử dụng bộ lọc tùy chỉnh nocache mà đặt tất cả các tiêu đề cần thiết - no-cache, không có cửa hàng,-phải xác nhận lại, vv Nhưng
- này không hoạt động trên tất cả các trình duyệt
- đặc biệt là Safari (điện thoại di động trong hầu hết các trường hợp) totaly bỏ qua các cài đặt như vậy
Tôi sẽ cố gắng tạo hacks và buộc safari di động làm mới, nhưng đây không phải là những gì tôi mong đợi.
Tôi muốn biết nếu tôi có thể:
- xử lý ngoại lệ mà không hiển thị sử dụng bất kỳ vấn đề tồn tại (hoàn toàn minh bạch cho người dùng)
- ngăn chặn vấn đề này bằng cách thay thế chống giả mạo tên người dùng thẻ mà sẽ cho phép người dùng đăng nhập lại mà không có ngoại lệ này, nếu hacks của tôi liên quan đến bộ nhớ đệm của trình duyệt sẽ ngừng hoạt động trong các phiên bản trình duyệt tiếp theo.
- Tôi thực sự không muốn dựa vào hành vi của trình duyệt vì mỗi hành vi đều khác nhau.
UPDATE 1
Để thực hiện một số giải thích, tôi biết làm thế nào để xử lý những sai sót trong MVC. Vấn đề là các lỗi xử lý này không giải quyết được vấn đề của tôi chút nào. Ý tưởng cơ bản về xử lý lỗi là chuyển hướng đến trang lỗi tùy chỉnh với thông điệp đẹp. Nhưng tôi muốn ngăn chặn lỗi này xảy ra, không phải để xử lý nó theo cách hiển thị của người dùng. Bằng cách xử lý tôi có nghĩa là bắt làm cho tên người dùng thay thế hoặc hành động thích hợp khác sau đó tiếp tục đăng nhập.
UPDATE 2
Tôi đã thêm dưới đây giải pháp mà đang làm việc cho tôi.
điều này làm việc tuyệt vời cho tôi. Tôi không cần nó để làm bất kỳ ưa thích. Chỉ cần không ném màn hình màu vàng. – hal9000