javascript - API 的响应未定义
问题描述
因此,我正在尝试使用令牌制作身份验证系统。这通过发送一个带有令牌的 get 请求来工作,并且 API 应该返回信息。我遇到了一个错误,TypeError: Cannot read property 'Error' of undefined
错误指向这条线if (UserData.Error == "Token not valid") {return false}
。所以我猜这意味着 API 的响应没有被放入UserData
. API 工作正常,如果令牌正确,则返回如下:
{
"username": "admin",
"is_staff": true,
"email": "admin@gmail.com"
}
这是令牌不正确时的响应
{
"Error": "Token not valid"
}
这是我的代码:
function isAuthenticated() {
const authtoken = localStorage.getItem('AuthToken')
if (authtoken == null) {
return false
} else {
let UserData;
axios.get(`http://localhost:8000/api/token/?token=${authtoken}`).then(function(request) {
UserData = request.data
})
if (UserData.Error == "Token not valid") {return false}
else {return UserData}
}
}
解决方案
由于 ajax 请求将在 js 中以异步方式工作,我们可以将调用与async await
.
async function isAuthenticated() {
const authtoken = localStorage.getItem('AuthToken')
if (authtoken == null) {
return false
} else {
let UserData;
UserData = await axios.get(`http://localhost:8000/api/token/?token=${authtoken}`).then(function(request) {
return request.data
})
if (UserData.Error == "Token not valid") {return false}
else {return UserData}
}
}
# while executing use await
userData = await isAuthenticated()
推荐阅读
- php - 变量变量计数php
- node.js - Nodejs - 如何创建加密密钥并将其保存在文件中以供以后使用?
- python - 与 Matplotlib.pyplot 的并行性
- python - 模型/表单/Django
- java - 创建具有可变数据类型的数组
- alpine.js - 我们如何在 Alpine.js v3 中将参数传递给 Alpine.data?
- solidity - solc : UnimplementedFeatureError: 嵌套数组尚未实现
- javascript - 使用 GitBash 从快捷方式运行 javascript 文件
- python - 在python中计算两次之间的工作时间
- python - 如何在 python 中使用 HDBSCAN 来检测图中的异常值?