首页 > 解决方案 > 为什么重定向后 url 变成这样(在 # 之前添加?)以及如何正确重定向

问题描述

我正在制作一个带有重定向功能的登录页面,逻辑如下:

如果我从未登录并输入 url '/home/qiputranscode',它将重定向到

' http://127.0.0.1:8000/#/login?redirect=%2Fhome%2Fqiputranscode '。

然后我需要使用用户名和密码请求服务器以获取条目“/home/qiputranscode”页面的令牌。

但是在输入我的用户名和密码后,网址变成了这样:

' http://127.0.0.1:8000/?#/login?redirect=%2Fhome%2Fqiputranscode '

并且没有请求服务器或重定向到“/home/qiputranscode”。

那么,为什么要添加 url?本身在 # 之前。

它们之间有什么区别,如果您给我任何建议,我将不胜感激

重定向代码如下:

router.beforeEach((to, from, next) => {
 if (to.matched.some(r => r.meta.requiredAuth)) {
   if (store.state.token) {
     next()
   } else {
     next ({
       path: '/login',
       query: {redirect: to.fullPath}
     })
   }
 } else {
   next()
 }
});

标签: vue.jsredirect

解决方案


之后的部分?querywithkey=redirectvalue=full path

登录后重定向到保存的路径调用这个

this.$router.push({ path: this.$route.query.redirectTo })

而且你还需要防止默认的表单行为

<form v-on:submit.prevent ...

推荐阅读