2017-01-21 10 views
0

vue.jsルートがレンダリングされる前にユーザのパーミッションをチェックする方法を知っている人はいますか? checkPermission()機能がアクティブになる前に、しかし、問題は(データなしはいえ)一時的にページ全体がロードされvue.jsルートがロードされる前にパーミッションを確認する

created: function() { 

    var self = this; 

    checkPermissions(function (result) { 
     if(result === 'allowed') { 
      // start making AJAX requests to return data 
      console.log('permission allowed!'); 
     } else { 
      console.log('permission denied!'); 
      self.$router.go('/denied'); 
     } 
    }); 
} 

と再:私は、コンポーネントのcreated段階の権限をチェックすることにより、部分的な解決策を思い付きました/deniedへのルート。

また、同じコードをbeforeCreate()フックに追加しようとしましたが、何の効果もないようです。

誰にも他のアイデアはありますか?注 - 権限はページによって異なります。

ありがとうございます!あなたが必要とするものは、データの取得とVueのルータドキュメントで定義されている

答えて

1

は - ドキュメントが言うようにhttps://router.vuejs.org/en/advanced/data-fetching.html

だから、時にはあなたは、経路が活性化されたときのデータをフェッチする必要があります。

作成フックでcheckPermissionsをキープして、ルートオブジェクト見る:多分もっと便利ソリューションは分離法に作成されたフックからの移動ロジックも、その後、あまりにもフックにし、時計のオブジェクトでそれを呼び出します

watch: { 
    // call again the method if the route changes 
    '$route': 'checkPermissions' 
} 

を(ES6構文を使用)

export default { 
    created() { 
    this.checkPermissions() 
    }, 
    watch: { 
    '$route': 'checkPermissions' 
    }, 
    methods: { 
    checkPermissions() { 
     // logic here 
    } 
    } 
} 
関連する問題