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

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

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

回答
編輯回答
不討囍

1、你可以在根組件created下判斷l(xiāng)ocalStorage存儲的用戶是否不存在就跳轉登錄頁,存在邏輯自己處理。
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{//不然就跳轉到登錄;
  next('/login');
}

}
})

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

來拆分一下題主的要求

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

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

2.如果未登錄進來APP就是登錄頁面
答案如上

3.登錄完成后進去個人中心
這個在你的登錄接口里面判斷就好了,如果登錄成功,就跳轉到個人中心去

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

2017年12月31日 18:05
編輯回答
獨白

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

2017年9月11日 02:52