我正在尝试使用vue-authenticate的oauth2提供程序和自定义axios响应拦截器进行身份验证,如下所示:
bindRequestInterceptor() {
this.$http.interceptors.request.use((config) => {
console.log('Axios intercetping request')
console.log(`Before checking Token : ${this.getToken()}`)
if (this.isAuthenticated()) {
console.log('Authenticated')
config.headers.Authorization = [
this.options.tokenType, this.getToken(),
].join(' ')
} else {
console.log('Not authenticated')
delete config.headers.Authorization
let this_ = this;
this.authenticate('oauth2').then(function(authResponse){
console.log(authResponse)
this_.isAuthenticated = this_.$auth.isAuthenticated();
})//This fires an oauth popup window
}
console.log(`After checking Token : ${this.getToken()}`)
return config
})
},
运行ajax调用时:
-我在新窗口中重定向到我的授权网址(/oauth/authorize
)
-批准后,我成功地使用授权码重定向到了自定义redirect_uri
。
我的问题是,为什么在执行此流程后我不能成为authenticated
。
实际上,如果我通过axios调用ajax,它将使我从授权流程(批准窗口等)中重新循环
这里有没有人熟悉此工具,以及如何解决此问题?
注意:关闭批准窗口时,我在名为ajax的页面中收到此错误
Possible Unhandled Promise Rejection: Error: Auth popup window closed
注2:根据上述代码的控制台日志
Axios intercetping request
app.js?id=01021d92b5ff42f0b696:30471 Before checking Token : null
app.js?id=01021d92b5ff42f0b696:30479 Not authenticated
app.js?id=01021d92b5ff42f0b696:30487 After checking Token : null