代码之家  ›  专栏  ›  技术社区  ›  Eyal Patrick

Vue.js,将值从组件发送到路由器/index.js

  •  0
  • Eyal Patrick  · 技术社区  · 7 年前

    我想寄封信 JWT token 来自 Login.vue 并在 router/index.js 在我将用户重定向到下一页之前。

    <script>
    import axios from "axios"; 
    
    export default {
      name: "Login",      
      methods: {
        login() {
    
          let userDetails = {
            'Username' : this.email,
            'Password' : this.password
          }
          axios       
            .post('https://localhost:44349/api/Token/CreateToken',userDetails)
            .then((response) => {      
                this.token  = response.data.token 
                this.$router.push({
                    name:'Books', 
                    params:{token:this.token}}) // <--- send Token
            })
            .catch((error) => {
                console.log(error)
            });
        }
      }
    };
    </script>
    

    路由器/index.js

    const router = new Router({    
      routes: [    
        {
          path: '/books',
          name: 'books',
          component: Books,
          props: true,      
           meta: {
            requiresAuth: true
          }
        },
        {
          path: '/login',
          name: 'Login',
          component: Login
        }
      ]
    });
    
    
    router.beforeEach((to, form, next) => {
      if (to.matched.some(rec => rec.meta.requiresAuth)) {   
    
        let isTokenValid= ??; // how to get the token?    
    
        if (isTokenValid) {        
           next();
        } 
        else {          
          next({ name: 'Login' });
        }
      }  
    });
    
    export default router 
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   FosterZ    7 年前

    我曾经 本地存储 存储令牌。或者,您可以使用vuex进行存储,请遵循以下步骤 Authentication using Vuex

      .then((response) => {  
          this.token  = response.data.token 
           localStorage.setItem('user-token', this.token);
            this.$router.push({
                name:'Books', 
                }) // <--- send Token
        }).catch(){
            localStorage.removeItem('user-token');
        }