登录nuxt.js后重定向到先前的URL

时间:2019-02-09 11:49:59

标签: vue.js nuxt.js nuxt

我基本上想在用户成功登录后重定向到上一个URL。

我使用先前的网址(例如/login?redirect=/page1/page2)重定向到登录页面。

我想在用户验证时将其重定向回该URL。 我在这里使用auth-modulehttps://auth.nuxtjs.org/

我如何登录用户。

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

我在文档中唯一能找到的是:https://auth.nuxtjs.org/getting-started/options#redirect

但是它仅重定向到特定页面而不是查询中的上一页。

关于如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:3)

您可以这样做

  this.$router.back()

并返回到最后一条路线。

程序导航| Vue路由器 https://router.vuejs.org/guide/essentials/navigation.html

谢谢。

答案 1 :(得分:0)

有一个相当详细的讨论in github,有关Nuxt在直接访问受保护页面时遇到重定向问题。重定向转到默认页面重定向,而不是先前的命中页面。正确的行为应该是存储redirect,然后在使用正确的凭据进行身份验证(登录)后继续进行操作。

3天前(2019年4月14日),MathiasCiarloauth-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回购的主线中。