在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/PHP  HTML/ 用戶登陸?vue?生命周期?

用戶登陸?vue?生命周期?

用vue寫了一個(gè)注冊登錄頁面?,F(xiàn)在登錄成功用localStorage將登錄成功后的數(shù)據(jù)緩存在本地,但是我想實(shí)現(xiàn)一個(gè)功能就是,進(jìn)入APP如果已經(jīng)登錄就直接進(jìn)去APP首頁,如果未登錄進(jìn)來APP就是登錄頁面,登錄完成后進(jìn)去個(gè)人中心,就能來回點(diǎn)擊底部導(dǎo)航切換頁面了。求大神指教改怎么寫

回答
編輯回答
不討囍

1、你可以在根組件created下判斷l(xiāng)ocalStorage存儲的用戶是否不存在就跳轉(zhuǎn)登錄頁,存在邏輯自己處理。
2、或者使用beforeEach具體自行查文檔。

2017年4月12日 13:57
編輯回答
雨萌萌

router.beforeEach((to, from, next) => {
var userInfo= JSON.parse(sessionStorage.getItem('userInfoStorage'));//獲取瀏覽器緩存的用戶信息
if(userInfo){//如果有就直接到首頁咯

next();

}else{

if(to.path=='/login'){//如果是登錄頁面路徑,就直接next()
  next();
}else{//不然就跳轉(zhuǎn)到登錄;
  next('/login');
}

}
})

2017年12月16日 18:48
編輯回答
怣痛

來拆分一下題主的要求

1.進(jìn)入APP如果已經(jīng)登錄就直接進(jìn)去APP首頁
這里需要做2步:a.將app的入口鏈接設(shè)置成你的app首頁鏈接;2.在全局前置守衛(wèi)中判斷是否存有數(shù)據(jù)(這里注意后端么有設(shè)置超時(shí),否則不要這么干),如果有則進(jìn)入首頁,沒有則進(jìn)入登錄頁

router.beforeEach((to, from, next) => {
  // 如果存的有數(shù)據(jù)或者是去登陸頁,那就盡管它操作
  if (localStorage.getItem('user_data') || to.fullPath === '/login') {
    next()
  } else {
    // 如果不是就跳轉(zhuǎn)到登錄頁
    next({ path: '/login' })
  }
})

2.如果未登錄進(jìn)來APP就是登錄頁面
答案如上

3.登錄完成后進(jìn)去個(gè)人中心
這個(gè)在你的登錄接口里面判斷就好了,如果登錄成功,就跳轉(zhuǎn)到個(gè)人中心去

這里再啰嗦一句,如果后端做了登錄時(shí)效的限制,如上判斷會存在用戶已經(jīng)登錄超時(shí),但緩存是在的情況。
此時(shí)就變成用戶明明登錄了,卻得不到界面數(shù)據(jù)。
解決方法是,你可以在你封裝的接口中判斷(假設(shè)你封裝了),接口返回的狀態(tài)碼是不是用戶未登錄或超時(shí)(和后端溝通用戶未登錄或登錄超時(shí)的狀態(tài)碼是什么),如果是,則跳轉(zhuǎn)到登陸頁

2017年12月31日 18:05
編輯回答
獨(dú)白

這個(gè)需要一個(gè)導(dǎo)航守衛(wèi)來判斷,傳送門https://router.vuejs.org/zh-c...

2017年9月11日 02:52