web-dev-qa-db-ja.com

ログイン後のNuxtJSリダイレクト

私はnuxtjsとLaravel Passportを使用しています。ユーザーが/ someurlにアクセスしたが、ログインメソッドが '/'にプッシュした場合、セッションに/ someurlを保存してプッシュできるようにする方法を教えてください。ログイン時のセッション変数?呼び出されるセッション変数がありますが、認証ミドルウェアで更新されます。明らかに何かが欠けています。これが私のコードです:auth.jsミドルウェアファイル

export default function ({ route, store, redirect }) {
let params = ''
if (!route.path.startsWith('/login') && !route.path.startsWith('/assets') && route.path !== '/') {
    store.state.requestUrl = route.path
}
if (!store.state.authenticated) {
    return redirect('/login')
}

そしてログイン

await this.$store.dispatch('login', {
    username: this.loginDetails.username,
    password: this.loginDetails.password
})
    this.$router.Push(this.$store.state.requestUrl) // this is always '/'
} catch (e) {
    console.log(e)
    this.failedLogin = true
}
5
KodiakSA

ミューテーションを使用して状態(store.state.requestUrl)を変更する必要があります(ストアのdispatchメソッド-this.$store.dispatch('login')ですでに使用しています)。したがって、ストアの状態を変更するミューテーションを書き込む必要があります。 this.$store.dispatch('set_request_url', requestUrl)

ところで:Nuxtには認証用のモジュールがあります:) https://auth.nuxtjs.org/ 使用することをお勧めします!しかし、自分で実装したい場合は、リダイレクトURLをCookieに保存します(vuexよりも耐久性があるためです)。 Nuxtにはcookieに保存するためのモジュールがあります: https://www.npmjs.com/package/cookie-universal-nuxt ですが、vuejs cookieモジュールを使用することもできます https: //github.com/alfhen/vue-cookie

1
Jakub Saleniuk