項目中有一個頁面需要放到移動端,pc端是通過賬號密碼登錄獲取token,跳轉網頁前,在beforeEach中驗證是否已有token,但是在移動端就訪問這一個頁面,爲了避免登錄就需要直接用token去訪問,我是通過?把token拼接在網址後面
判斷移動端還是pc端,在beforeEach之前判斷,這樣pc端就不能通過token去訪問
window.location.href=window.location.href.split('?token=')[0] //跳轉網頁
因爲在beforeach中一旦判斷沒有token就會跳轉到登錄頁,這時候token是沒有存下來的,所以需要重新訪問,而且這樣寫是爲了避免陷入死循環,如果沒有token就不會再跳轉
function browserRedirect() {
var sUserAgent = navigator.userAgent.toLowerCase();
if (/ipad|iphone|midp|rv:1.2.3.4|ucweb|android|windows ce|windows mobile/.test(sUserAgent)) {
//移動端頁面
var phonetoken=window.location.href.split('?token=')[1]
if(phonetoken){
setToken(phonetoken)
store.state.token=phonetoken
window.location.href=window.location.href.split('?token=')[0] //跳轉網頁
//這樣寫是爲了避免陷入死循環,如果沒有token就不會再跳轉
}
} else {
//pc端頁面
}
}
browserRedirect();
這樣寫移動端是可以通過token去訪問項目中所有的頁面,如果要限制可訪問頁面,可以通過判斷window.location.href.split('?token=')[0] ,只有是我們允許訪問的網址纔可跳轉