【发布时间】:2020-12-25 05:03:04
【问题描述】:
我在我的实际项目中添加了令牌,但我在解码它们时遇到了问题:
我使用以下方法来解码令牌:
function verifyToken(req, res, next) {
console.log(req.headers);
console.log(JSON.stringify(req.headers.authorization));
if(!req.headers.authorization) {
return res.status(401).send('Unauthorized request!');
}
let token = req.headers.authorization.split(' ')[1];
console.log(token);
if(token === 'null') {
return res.status(401).send('Unauthorized request!');
}
let payload = jwt.verify(token, 'secretKey');
if(!payload){
return res.status(401).send('Unauthorized request!');
}
req.userId = payload.subject;
next();
}
拦截方法:
intercept(req, next) {
let storageService = this.injector.get(StorageService);
let token = '';
storageService.get(AuthConstants.AUTH).then(res => {
console.log("res: " + res + '\ntype: ' + typeof(res));
token = res;
});
let tokenizedReq = req.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}
});
return next.handle(tokenizedReq);
}
}
编辑:
存储服务:
async store(storageKey: string, value: any) {
const encryptedValue = btoa(escape(JSON.stringify(value)));
await Storage.set({
key: storageKey,
value: encryptedValue
});
}
async get(storageKey: string) {
const res = await Storage.get({ key: storageKey })
if(res.value) {
return JSON.parse(unescape(atob(res.value)));
} else {
return false;
}
}
现在有以下问题: res 有token的值,并将其分配给“token”。但是授权是通过 token='' 完成的。我认为这是因为 storageService.get() 函数是异步的。如何告诉我的代码在执行 req.clone 之前等待分配给令牌的数据?
【问题讨论】:
标签: node.js angular express ionic-framework jwt