【问题标题】:Simples Vuejs route guard with password only仅带密码的 Simples Vuejs 路由保护
【发布时间】:2020-02-08 10:24:20
【问题描述】:

所以,我正在尝试创建一个路由保护,在用户被重定向到仪表板之前会提示用户输入密码,但是在完成所有设置后,我仍然可以通过在地址栏中键入 /dashboard 来访问仪表板。 我有什么:

export default new Router({
  mode: 'history',
  routes: [
    {
      path: '/dashboard',
      name: 'dashboard',
      component: home,
      props: true,
      beforeEnter: (to, from, next) =>{
        if (to.params.senha == to.params.mestre){
          next()
        } else{
          next({name: 'login'})
        }
      }

其中“senha”是用户输入,“mestre”是登录组件数据中存储的变量主密码。

这就是登录组件发送给路由器的内容

toApp() {
      this.$router.push({
        name: "dashboard",
        params: { senha: this.senha, mestre: this.mestre }
      });

我知道这不是一种安全的身份验证方法或任何相关的方法,它对于一个非常简单的应用程序来说非常简单。

我错过了什么?

【问题讨论】:

  • 你在浏览器控制台中得到了什么然后直接接近dashboard路径?

标签: vue.js vue-router


【解决方案1】:

以上逻辑运行正常,没有发现bug

尝试对路由器推送和测试中的值进行硬编码

this.$router.push({
        name: "dashboard",
        params: { senha: "senha", mestre: "senha" }
      });

如果它工作正常,然后尝试在路由之前在控制台中打印值

console.log(this.senha, this.mestre);
this.$router.push({
        name: "dashboard",
        params: { senha: this.senha, mestre: this.mestre }
      });

如果您发现任何问题,请尝试检查控制台是否有任何错误

【讨论】:

  • 所以,我在路由器中硬编码了 senha 和 mestre,并且仍然能够通过键入“/dashboard”来导航,我所做的是控制台记录路由器必须比较的内容:beforeEnter: (to, from, next) => { if (to.params.senha == to.params.mestre){ console.log(to.params.senha) console.log(to.params.mestre) next() 和两者他们返回未定义
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2019-08-31
  • 2019-09-02
相关资源
最近更新 更多