私は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
}
ミューテーションを使用して状態(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