基本的に、ユーザーが正常にログインしたときに前の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
ただし、クエリの前のページではなく、特定のページにのみリダイレクトされます。
これを達成する方法についてのアイデアはありますか?
あなたはこれを行うことができます
this.$router.back()
そして、最後のルートに戻ります。
プログラマティックナビゲーション| Vueルーター https://router.vuejs.org/guide/essentials/navigation.html
ありがとう。
保護されたページに直接アクセスしているときにリダイレクトの問題が発生する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
_リポジトリのメインラインにマージされるまで待つこともできます。