重定向如果经过身份验证的NodeJS

时间:2017-11-28 10:52:41

标签: node.js express vuejs2 vue-component

我正在使用以下技术

  • 的NodeJS
  • ExpressJS
  • VueJS
  • ngnix

我将x-access-token存储在localstorage

当用户访问网站www.example.com时,vuejs组件会执行以下操作

通过调用身份验证终结点验证用户是否已登录 如果经过验证,则会重定向到www.example.com/controlpanel

当然,问题是加载vuejs组件需要一段时间,因此页面加载后来被重定向。

有没有办法以更清洁的方式处理上述场景。使用ngnix偶数?

由于

1 个答案:

答案 0 :(得分:1)

在访问主页时呈现的组件(根路由/) 添加beforeRouteEnter()导航防护,如下所示:

//in root route component options

beforeRouteEnter(to, from, next){
    myAjax.get('/auth').then((res) => {
        if(res.data.user){
            //user logged in
            next('/controlpanel');
        }else{
            next('/');
        }
    });
}

在呈现路径组件之前调用此保护,并且只有在您调用next()时才会被确认并呈现

请记住,由于尚未创建组件,因此无法访问组件的vue实例

要获得beforeRouteEnter()内的实例,请执行以下操作:

beforeRouteEnter(to, from, next){
    next(vm => {
        //acess the component's instance using vm
    }
}   

有关详细信息,请查看In-Component Guards