web-dev-qa-db-ja.com

vue-routerを使用したVueJSサーバールートにリダイレクトする方法

ログアウトリンクをクリックしているユーザーをサーバーでレンダリングされたログアウトページにリダイレクトしようとしています。しかし、以下のコードでは、デフォルトのパスにリダイレクトされます。

flaskに次のようにサーバールートを設定しています:

@app.route('/logout')
def logout():
    logout_user()
    return render_template('login.html')

In vueサーバールートに誘導されるように、ルートをリダイレクトしたい。

<template>
<a v-on:click="logout">Logout</a>
</template>
<script>
  export default {
    name: SomePage.vue
  },
  methods: {
    logout () {
      this.$router.replace('/logout')
      // I also tried .go('/logout')
    }
  }
 </script>

次に、ルーターにルートを設定する必要がありますか?

export default new Router {
  routes: {
     {
     path: '/'
     component: Default
     children: [
       {
       path: '/logout'
       // no component added here - is it needed?
       }
     ]
  }
}

すでに/ logoutにリダイレクトしているので、ベースの/ logoutに移動して、サーバーから返される.htmlページを取得したいだけなので、このルートにコンポーネントを追加することがどのように役立つかわかりません。何か案は?

6
Don Smythe

$routerメソッドを介してウィンドウの場所を操作しても、ブラウザーはページ全体のリロードを実行しません。これは、この場合に必要なことです。ウィンドウの場所を手動で設定する必要があります。

window.location.replace('/logout')
10
Decade Moon

私はいくつかの問題を抱えており、解決策を見つけています... vuejs2 +でこれを試してください

this.$router.Push('/logout')
17