2017-07-07 3 views
0

私は次のコードを作成して、私のvueコンポーネントにミドルウェアとして機能します。vue-routerミドルウェアを使用してユーザをページに戻すにはどうすればよいですか?

Router.beforeEach(
    (to, from, next) => { 
    if (to.matched.some(record => record.meta.forVisitors)) { 
     if (Vue.auth.isAuthenticated()) { 
     next({ 
      path: '/home' 
     }) 
     } else next() 
    } else if (to.matched.some(record => record.meta.forAuth)) { 
     if (!Vue.auth.isAuthenticated()) { 
     next({ 
      path: '/login' 
     }) 
     } else next() 
    } else if (to.matched.some(record => record.meta.forLog)) { 
     if (Vue.auth.isAuthenticated()) { 
     next({ 
      path: from() 
     }) 
     }else if (!localStorage.getItem('validUser')) { 
       next({ 
      path: '/login' 
     }) 
      } else next() 
    } else next() 
    } 
) 

ほとんどのミドルウェアが正常に動作しています。 from()は機能しません。 私はfromとしてこれをやろうとしましたが、彼は彼が来たページにユーザーをリダイレクトしていません。あなたがfromをCONSOLE.LOG場合

+0

'パス以下のサンプルのようにオブジェクトのpath属性を使用します。from.path' – thanksd

答えて

0

あなたはからはstringが、オブジェクトではないことを見ることができ、次の

Object {name: null, meta: Object, path: "/", hash: "", query: Object…} 
fullPath 
: 
"/" 
hash 
: 
"" 
matched 
: 
Array(0) 
meta 
: 
Object 
name 
: 
null 
params 
: 
Object 
path 
: 
"/" 
query 
: 
Object 
__proto__ 
: 
Object 

を取得します。その代わり、

else if (to.matched.some(record => record.meta.forLog)) { 
    if (Vue.auth.isAuthenticated()) { 
    console.log(from); 
    next({ 
     path: from.path 
    }) 
+0

感謝!その仕事。 '.path'がトリックでした。 –

関連する問題