iT邦幫忙

0

.Net MVC PartailView当Token过期,Ajax获取的partialView变成了LoginPage问题

ksg 2019-03-18 15:44:19574 瀏覽

請問該如何解決以下的問題?

我使用Ajax去獲取獲取PartialView獲取的內容,再將它放到Bootstrap ModalPopup。

當使用者的JWT Token過期時,

原本應該獲取的PartialView內容,

卻變成了登錄頁面的內容,正常的行為應該是直接跳轉到LoginPage重新去登入。

$.ajax({
        type: "GET",
        url: "/Test/TestPartialView",
        data: { something data... },
        error: function (request, status, error) {
    },
    success: function (resp) {
        $("#testDiv").html(resp);
    }
});

1 個回答

0
Homura
iT邦高手 2 級 ‧ 2019-03-19 09:14:40
最佳解答

我最近的專案是這樣寫的
只要進入需要登入的Controller時
但未登入就傳回Header:X-Auth-Failed錯誤等於1
然後在layout的地方每當ajax認證時有錯就會跑這段ajaxError

$(document).ajaxError(function (event, xhr, settings) {
    if (xhr.getResponseHeader("X-Auth-Failed") == "1") {
        top.location.href = '登入頁面';
    }

}
ksg iT邦新手 5 級 ‧ 2019-03-19 17:55:07 檢舉

感謝答复,我這裡測試了幾次,當Token過期的時候,我會拿到登錄頁面的內容,但是狀態:200,也沒有觸發ajax的錯誤。
而是直接取得登錄頁面

Homura iT邦高手 2 級 ‧ 2019-03-19 21:18:54 檢舉

ksg
你要做驗證的Attritube來過濾未登入的人呼叫Method
未登入進到登入的Method不能回應200啊....
應該說你不是從後端導回登入頁
而是要丟回未登入的狀態回去讓ajaxError觸發

我要發表回答

立即登入回答