2017-01-26 5 views
0

私はそのようなコードを持っている場合タイプは動作しません。Vue2ルータを手動で

ページが読み込まれると、トークンがチェックされます。私がトークンを持っていないとき、私はログインページにリダイレクトしています。ログインページの場合はallVideosにリダイレクトするトークンがあるか、他のページの場合はリダイレクトしません。

私はリフレッシュを行ったときにすべてうまくいく、いくつかのボタンなどを通過する。しかし、手動で/#/ loginと入力してVueレンダリングログインページを入力すると、auth_tokenが存在する。私が手動で入力すると、方法は全くcreatedにはなりません。私は再び/#/ loginログインページからログインすると再び作業を開始....任意のアイデア???おかげ

アップデート:まあ、私は今、非常にクリーン私のためのようなコード

router.beforeEach((to, from, next) => { 
    if(localStorage.hasOwnProperty('auth_token')) { 
     if(to.name == 'login') { 
      next({name: 'allVideos'}); 
     } 
    } else { 
     if(to.name != 'login') { 
      next({path: '/login'}); 
     } 
    } 
     next(); 

}); 

ナビゲーションガードを使用しようとしたんだけど、私はあなたには、手動で

+1

私は概念がインスタンスにVueのそれらのものを置くの右here.Insteadはないと思うが、私はあなたがあなたのケースでは、いくつかのナビゲーションガードして行くべきだと思う 'router.beforeEach'を行う必要がありますトリックhttps://router.vuejs.org/en/advanced/navigation-guards.html –

+0

あなたは 'created'メソッドにそのようなコードを追加するのではなく、' beforeEach'フックを使うべきですか?チェックして、それについてまだ読まないでください。ありがとう! –

+0

はい、この例はhttps://github.com/TahaSh/spa-forum/blob/master/resources/assets/js/main.js#L56 - ここで確認してください(これはVue 1と古いルータコードですが、あなたに役立つかもしれません) beforeEachはライフサイクルフックではなく、ルータインスタンスからのナビゲーションガードです。 –

答えて

0

を入力していたときに問題がまだそこにありますコードnext()が2回呼び出されるため、問題が発生します。あなたはこのコードを試すことができます。

router.beforeEach((to, from, next) => { 
    if(localStorage.hasOwnProperty('auth_token')) { 
    if(to.name === 'login') { 
     next({name: 'allVideos'}); 
    } 
    } else if(to.name !== 'login') { 
    next({path: '/login'}) 
    } else { 
    next(); 
    } 
}); 
関連する問題