【发布时间】:2017-11-11 09:37:17
【问题描述】:
我一直在尝试使用Axios 来检查用户是否经过身份验证的服务器端(Node+Express+Passport)。
如果用户通过身份验证,则服务器发回“已连接”字符串,否则,它会发回“未连接”字符串。
Router.get('/isAuth', function (req, res, next) {
if (req.isAuthenticated()) {
return res.status(200).send('Connected');
} else {
return res.status(200).send('Not connected');
}
});
我写了一个简单的函数来检查服务器的响应:
function isAuth() {
return axios.get('http://localhost:3000/endpoints/isAuth')
.then((response) => {
if (response.data === "Connected") {
return true;
} else {
return false;
}
})
.catch((error) => {
console.log(error)
})
}
如果用户已连接,该函数应该返回 true,反之亦然。
现在,当我尝试在控制台中记录函数的结果时,我得到的是:
Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
__proto__ : Promise
[[PromiseStatus]] : "resolved"
[[PromiseValue]] : false
如您所见,返回的值是一个 promise 对象,而所需的输出最好是“True”或“False”。
【问题讨论】:
-
嗯,它是“基于 Promise 的浏览器和 node.js 的 HTTP 客户端”,它返回 Promise 并不意外
-
嗨@KyleSentient 你知道如何提取这些数据了吗?我今天遇到了同样的问题,或者你有没有找到任何替代方案?
-
@IrfandyJip 你好。老实说,我不知道我做了什么或如何做到的,但我最终设法解决了这个问题。这是我的做法,但请注意,我的项目涉及 NodeJS/Express 作为后端和 VueJS 作为前端,所以,如果你不熟悉这些,你可能会有点困惑。这是我在服务器上的处理方式:ExpressJS Backend,这是我在客户端的处理方式:VueJS Login Component