使用JWT令牌刷新令牌错误的VueJS(资源,路由器和@ websanova / vue-auth)登录

时间:2016-09-19 20:55:43

标签: authentication jwt vue.js vue-resource vue-router

我正在使用VueJS和Electron构建一个应用程序,现在我正在尝试使用@websanova/vue-auth包创建一个登录,一切顺利(登录,注销,路由保护等等)唯一的事情我坚持认为,每当我登录并刷新或重新启动电子时,它就会把我踢回登录页面。奇怪的是,它成功刷新了令牌,如果我查看localstorage它会被更新,当我尝试使用REST客户端进行手动请求时,令牌可以正常工作。我无法使用该令牌进入应用程序。

截至今日(19-sep-2016),我正在使用最新版本的VueJSvue-routervue-resource@websanova/vue-auth

API端是Laravel 5.3安装,我使用tymondesigns/jwt-auth包来处理JWT令牌。

这就是我使用路线的方式:

'/': {
    auth: true,
    name: 'dashboard',
    component: HomeView
},
'/login': {
    auth: false,
    name: 'login',
    component: LoginView
}

正在使用browserify和vueify编译视图。

我的登录功能是这样的:

this.$auth.login({
    body: this.body,
    success: function () {
        this.loading = false;
    },
    error: function () {
        this.error.status = true;
        this.loading = false;
        this.body.password = '';
    },
    rememberMe: true
});

如果您需要更多信息以便能够帮助我,请告诉我。

修改:如果你想看看,这里是回购的链接:

API:https://github.com/luukhoeben/rmi-app-api

电子应用:https://github.com/luukhoeben/rmi-app-electron

谢谢, Luuk

1 个答案:

答案 0 :(得分:0)

如果您设置

Vue.use(Auth, {
   router: Router,
   http: Vue.$http,
   tokenExpired: () => {
     return false
   }
})

设置tokenExpired返回false,就像这样,你将一起跳过令牌刷新,这并不是那么糟糕。缺点是您的客户在某些时候会有一个过期的令牌,并将被迫重新登录。

另一种方法是尝试检查令牌何时到期并根据该值进行刷新。