鍍金池/ 問答/HTML/ 打開頁面檢測用戶是否已登陸應(yīng)該放在vue哪個(gè)生命周期檢測?

打開頁面檢測用戶是否已登陸應(yīng)該放在vue哪個(gè)生命周期檢測?

如果我放在 beforeCreate 和 create 周期里,判讀是否登陸決定跳轉(zhuǎn)到主頁或者登陸頁面

             if (currentUser) {
                 this.$router.push('/dashboard/home')
              }
              else {
                 this.$router.push('/dashboard/login')
              }

就會出現(xiàn):

  • 即使是已登錄了,如果再打開一個(gè)窗口進(jìn)入這個(gè)頁面,還是會到登陸頁,即檢測不到已登錄的狀態(tài)

如果放在另外的周期的話,不會出現(xiàn)這個(gè)問題,但是會出現(xiàn)另一個(gè)問題:

  • 把主頁刷新一下, log out 會失效,再刷新一下又好了,再刷新又失效,刷新又好的狀態(tài),就相當(dāng)于在另一個(gè)窗口打開主頁,那這個(gè)窗口的主頁的logout是失效的,除非再刷新一下...

console.log 了一下,失效的logout點(diǎn)擊的時(shí)候還能輸出當(dāng)前用戶,但是我都退出了為什么還存在當(dāng)前用戶

                var that = this;
                AV.User.logOut().then(function() {
                    that.$router.push('/dashboard/login');
                });    
回答
編輯回答
笨小蛋

不是應(yīng)該放在路由的鉤子函數(shù)beforeEach里嗎

2017年12月22日 20:31
編輯回答
綰青絲

推薦你做一個(gè)路由攔截器,用axios封裝一個(gè)攔截器使用,在鉤子函數(shù)前進(jìn)行判斷。示例 https://juejin.im/post/591aa1... 里面有一部份有詳細(xì)的解析。

2017年6月1日 23:21
編輯回答