2009-03-20 37 views
5

Khi bạn đang sử dụng tư cách thành viên asp.net và bạn có thẻ [Ủy quyền] trên bộ điều khiển/Hành động, đôi khi bạn lấy lại từ cà phê/đi bộ, bạn đã đăng xuất khỏi trang web. Khi bạn bấm vào một nút hoặc liên kết gọi một cuộc gọi Ajax, html trả về không phải là những gì bạn yêu cầu nhưng màn hình đăng nhập, sau đó được hiển thị ở đâu đó trên trang (nếu bạn sử dụng $ ("trình giữ chỗ").).Màn hình đăng nhập trong kết quả ajax - Asp.net Mvc

Có cách nào để phát hiện điều này trong jQuery không? Vì nó là html hợp pháp bạn không nhận được một lỗi, nhưng nó không phải là một cái gì đó bạn muốn có ofcourse xảy ra.

Trả lời

6

Một điều bạn có thể làm là phát hiện thời gian chờ phiên phía máy khách. Thiết lập bộ hẹn giờ sẽ hết hạn ngay trước khi phiên thực tế của bạn hết hạn. Có bộ đếm thời gian bật lên một hộp thoại cho biết phiên sắp hết hạn và cho phép người dùng có cơ hội gia hạn (gửi lại yêu cầu AJAX để làm mới bộ hẹn giờ). Có bộ hẹn giờ khác trên hộp thoại sẽ hết hạn trước khi thời gian còn lại trên phiên thực tế hết. Nếu bộ hẹn giờ này kích hoạt, sau đó đặt lại href của trang thành url đăng xuất và đăng xuất người dùng. Rõ ràng, bộ hẹn giờ sẽ cần phải được đặt lại bởi hoạt động của người dùng trên trang - yêu cầu ajax, v.v.

6

Cách tiếp cận thời gian chờ của khách hàng của tvanfosson hoạt động rất độc đáo, thực sự - tôi đã bị ấn tượng bởi một số trang web mà tôi ' ve quay trở lại sau bữa ăn trưa và thấy rằng họ đã tự động chuyển hướng trở lại trang đăng nhập.

cách tiếp cận khác có thể thực hiện như sau:

Bạn gửi một yêu cầu Ajax tới (nói)/tài khoản/Thông tin chi tiết, nhưng cookie đăng nhập của bạn đã hết hạn, vì vậy bạn không được phép để thấy rằng; bộ điều khiển trả về/Bảo mật/Đăng nhập để thay thế.

Nếu điều khiển của bạn trả về xem đăng nhập thay vì trang bạn yêu cầu, có bạn xem cách thiết lập mã phản hồi để 401 Not authorized thay vì 200 OK?

Sau đó, bạn cần sửa đổi yêu cầu Ajax để kiểm tra mã trạng thái của phản hồi Ajax và nếu đó là 401 Không được ủy quyền, bạn có thể trả lời tương ứng - chuyển hướng đến trang đăng nhập, hiển thị hộp đăng nhập bật lên hoặc chỉ một thông báo lỗi có nội dung "xin lỗi, bạn cần phải đăng nhập lại"

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