前端登录跳转判断的问题

在登录成功跳转页面的场景中,由于前期在网上了解到使用router.push会存在致爬虫找不到子页面路径的问题,于是使用router-link包裹登录按钮,但是又有一个问题是不论密码错误或者正确的情况下只要点击登录按钮都会正常跳转到/admin。这个问题有什么好的思路解决吗?

img

img

可以设置个全局前置守卫


router.beforeEach((to, from, next) => {
  if (to.name !== 'Login' && !isAuthenticated) next({ name: 'Login' })
  else next()
})

【以下回答由 GPT 生成】

解决方案

为了解决这个问题,你可以在登录按钮的点击事件处理函数中加入一个条件判断,判断用户输入的用户名和密码是否正确。只有在正确的情况下,才执行跳转操作。

下面是一个示例的解决方案。

首先,在模板中定义登录按钮,用router-link包裹,并给按钮添加一个点击事件处理函数:

<router-link to="/admin" @click="login">登录</router-link>

然后,在Vue实例的methods中编写login方法,并在其中进行用户名和密码的验证:

methods: {
  login() {
    // 假设username和password是从组件的data中获取的
    if (this.username === "admin" && this.password === "123456") {
      // 密码正确,执行跳转
      this.$router.push("/admin");
    } else {
      // 密码错误,给出错误提示
      alert("用户名或密码错误");
    }
  }
}

这样,在用户点击登录按钮时,会先进行用户名和密码的验证。只有在验证通过的情况下,才会执行router.push进行页面跳转。否则,会弹出错误提示。

这样做的好处是,无论密码是否正确,都不会直接跳转到/admin页面,从而避免了不必要的爬虫问题。

请注意,上述代码中的用户名和密码验证逻辑仅作为示例。实际使用时,你需要根据你的业务逻辑和后端接口进行具体的验证操作。

希望这个解决方案对你有所帮助!如果你有任何疑问,可以随时向我提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^