我基本上想在用户成功登录后重定向到上一个URL。
我使用先前的网址(例如/login?redirect=/page1/page2
)重定向到登录页面。
我想在用户验证时将其重定向回该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
但是它仅重定向到特定页面而不是查询中的上一页。
关于如何实现这一目标的任何想法?
答案 0 :(得分:3)
您可以这样做
this.$router.back()
并返回到最后一条路线。
程序导航| Vue路由器 https://router.vuejs.org/guide/essentials/navigation.html
谢谢。
答案 1 :(得分:0)
有一个相当详细的讨论in github,有关Nuxt在直接访问受保护页面时遇到重定向问题。重定向转到默认页面重定向,而不是先前的命中页面。正确的行为应该是存储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
回购的主线中。