abstract:在.NET中驗(yàn)證用戶是否登錄或者是否過(guò)期,若需要登錄時(shí)則將請(qǐng)求轉(zhuǎn)向至登錄頁(yè)面。這個(gè)流程在進(jìn)行頁(yè)面請(qǐng)求時(shí)是沒(méi)問(wèn)題的,能正確進(jìn)行頁(yè)面跳轉(zhuǎn)。然而在使用xmlhttprequest時(shí),或者jq的getJson那種jsonp的方式來(lái)請(qǐng)求資源,服務(wù)器將會(huì)把這種跳轉(zhuǎn)解釋為 ‘資源已重新定位’ ,返回碼為302。但是瀏覽器將結(jié)果返回給ajax時(shí)并不會(huì)解析成302 found,而是會(huì)先進(jìn)行一次資源跳轉(zhuǎn),將跳轉(zhuǎn)后的新
在.NET中驗(yàn)證用戶是否登錄或者是否過(guò)期,若需要登錄時(shí)則將請(qǐng)求轉(zhuǎn)向至登錄頁(yè)面。
這個(gè)流程在進(jìn)行頁(yè)面請(qǐng)求時(shí)是沒(méi)問(wèn)題的,能正確進(jìn)行頁(yè)面跳轉(zhuǎn)。
然而在使用xmlhttprequest時(shí),或者jq的getJson那種jsonp的方式來(lái)請(qǐng)求資源,服務(wù)器將會(huì)把這種跳轉(zhuǎn)解釋為 ‘資源已重新定位’ ,返回碼為302。
但是瀏覽器將結(jié)果返回給ajax時(shí)并不會(huì)解析成302 found,而是會(huì)先進(jìn)行一次資源跳轉(zhuǎn),將跳轉(zhuǎn)后的新資源返回給ajax作為結(jié)果。
此時(shí)就需要手動(dòng)去判斷出ajax請(qǐng)求,手動(dòng)返回302以便ajax捕獲狀態(tài)。
同時(shí)在前端,需要為angular配置一個(gè)http攔截器,攔截所有的responseError,若錯(cuò)誤碼為302,則根據(jù)錯(cuò)誤信息進(jìn)行頁(yè)面跳轉(zhuǎn)。
在后臺(tái)進(jìn)行頁(yè)面跳轉(zhuǎn)時(shí):
為angular配置http攔截器
在配置中添加攔截器