web-dev-qa-db-fra.com

Redirection NuxtJS après la connexion

J'utilise nuxtjs et Laravel Passport. Si un utilisateur va dans/someurl, mais la méthode de connexion pousse vers '/' comment puis-je stocker/someurl dans la session afin de pouvoir pousser vers la variable de session lors de la connexion? J'ai une variable de session qui est appelée, mais elle est actualisée dans le middleware d'authentification. Il me manque clairement quelque chose. Voici mon code: dans auth.js fichier middleware

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')
}

et connectez-vous

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

Vous devez modifier un état (store.state.requestUrl) à l'aide de la mutation (méthode dispatch en magasin - vous l'avez déjà utilisé dans this.$store.dispatch('login')). Vous devez donc écrire une mutation modifiant un état dans le magasin, par exemple. this.$store.dispatch('set_request_url', requestUrl).

BTW: Il existe un module d'authentification dans Nuxt :) https://auth.nuxtjs.org/ Je recommande de l'utiliser! Mais si je voulais l'implémenter par moi-même, je stockerais une URL de redirection dans les cookies (car elle est plus durable que vuex). Nuxt dispose d'un module de stockage dans les cookies: https://www.npmjs.com/package/cookie-universal-nuxt , mais vous pouvez également utiliser un module de cookies vuejs: https: //github.com/alfhen/vue-cookie

1
Jakub Saleniuk