Tôi có ứng dụng với nhiều hành động ajax (được triển khai bằng cách sử dụng JQuery.ajax), trả về JSON ot html. Một số người trong số họ chỉ có thể truy cập được đối với người dùng được ủy quyền và tôi đã trang trí chúng với thuộc tính [Authorize]
. Đối với hành động không phải ajax, nếu người dùng không được ủy quyền - hệ thống sẽ chuyển hướng anh ta đến trang đăng nhập (được định cấu hình trong web.config).Kết quả trái phép trong yêu cầu ajax
Nhưng điều này không áp dụng cho hành động ajax, bởi vì nếu người dùng được ủy quyền - anh ta tải trang, sau khi cookie đó hết hạn và anh ta không được ủy quyền, thay vì khối html, thay thế cũ, anh ấy sẽ nhận được trang đăng nhập của tôi khối.
Tôi biết rằng tôi có thể giải quyết vấn đề này theo cách thủ công, ví dụ: xóa thuộc tính [Ủy quyền] và trả về json/html trống đặc biệt nếu người dùng không được phép. Nhưng tôi không thích giải pháp này, bởi vì tôi cần phải viết lại tất cả các hành động của tôi và chức năng ajax. Tôi muốn giải pháp toàn cầu, cho phép tôi không viết lại các hành động của mình (có thể là thuộc tính ủy quyền tùy chỉnh, hoặc một số xử lý tùy chỉnh kết quả trái phép http).
Tôi muốn trả lại mã trạng thái, nếu yêu cầu là ajax và chuyển hướng đến trang đăng nhập, nếu yêu cầu không phải là ajax.
"Tôi muốn trở lại mã trạng thái, nếu yêu cầu là ajax, và chuyển hướng đến trang đăng nhập, nếu yêu cầu không được Ajax." - Có vẻ như bạn đã vạch ra giải pháp cho vấn đề này, phải không? –
Bạn đã cố gắng làm gì vào thời điểm này? Sẽ có một số viết lại liên quan bất kể bạn đi theo con đường nào. –
Thỉnh thoảng tôi là một thằng ngốc. Hãy thử sử dụng Request.isAjaxRequest(); – Ohgodwhy