web-dev-qa-db-ja.com

nuxt.jsにログインした後、前のURLにリダイレクトします

基本的に、ユーザーが正常にログインしたときに前のURLにリダイレクトしたいと思います。

/login?redirect=/page1/page2などの以前のURLを使用してログインページにリダイレクトします。

そして、ユーザーが認証されたときに、そのURLにリダイレクトされるようにしたいのです。ここでauth-moduleを使用しています: https://auth.nuxtjs.org/

ユーザーのログイン方法。

methods: {
    async submit() {
      await this.$auth.loginWith('local', {
        data: this.form
      })
    }
}

私がドキュメントで見つけた唯一のものはこれです: https://auth.nuxtjs.org/getting-started/options#redirect

ただし、クエリの前のページではなく、特定のページにのみリダイレクトされます。

これを達成する方法についてのアイデアはありますか?

3
mauxtin

あなたはこれを行うことができます

  this.$router.back()

そして、最後のルートに戻ります。

プログラマティックナビゲーション| Vueルーター https://router.vuejs.org/guide/essentials/navigation.html

ありがとう。

6
Birante

保護されたページに直接アクセスしているときにリダイレクトの問題が発生するNuxtについては、かなり詳細な議論があります github内 。リダイレクトは、以前にヒットしたページではなく、デフォルトのページリダイレクトに移動します。正しい動作は、redirectを保存し、認証(ログイン)後に正しい資格情報を使用してそれに進むことです。

3日前(2019年4月14日)、 MathiasCiarlo これを修正するために_auth-module_リポジトリに [〜#〜] pr [〜#〜] を送信しました。リダイレクトが「失われた」主な理由は、SSRモードでリダイレクト値をCookieとして設定できない状態に関係しています。彼のコードは_storage.js_ファイル、特にsetCookie()メソッドに影響を与えます。参考までに、変更したメソッドをここに含めました。

_setCookie (key, value, options = {}) {
    if (!this.options.cookie) {
      return
    }

    const _key = this.options.cookie.prefix + key

    const _options = Object.assign({}, this.options.cookie.options, options)

    if (isUnset(value)) {
      Cookies.remove(_key, _options)
    } else {

      // Support server set cookies
      if (process.server) {
        this.ctx.res.setHeader('Set-Cookie', [_key + '=' + value])
      } else {
        Cookies.set(_key, value, _options)
      }
    }

    return value
  }
_

私は個人的にnpmを自分で変更したばかりですが、おそらくリポジトリをフォークして、そのフォークされたnpmを当面使用することができます。または、PRが_auth-module_リポジトリのメインラインにマージされるまで待つこともできます。

1
treejanitor