【发布时间】:2017-02-20 08:53:54
【问题描述】:
我有一个 MEAN 堆栈应用程序,它将用户信息存储在 JSON Web 令牌中,我正在尝试向 JSON Web 令牌添加一个值以供我的应用程序引用。我相信数据存储在 JSON Web 令牌中,我无法访问它,但我可能是错的。
这里是创建 JSON 网络令牌的地方服务器端:
userSchema.methods.generateJwt = function() {
console.log("I'm creating a JSON WebToken");
console.log(this.hasPaid); // HERE I CAN CLEARLY SEE THIS HAS THE VALUE I'M WANTING
var expiry = new Date();
expiry.setDate(expiry.getDate() + 7);
return jwt.sign({
_id: this._id,
email: this.email,
name: this.name,
hasPaid : this.hasPaid, // HERE IS THE VALUE I WANT
exp: parseInt(expiry.getTime() / 1000),
}, "MY_SECRET");
};
这是我的 AngularJS 身份验证服务:
var currentUser = function() {
if(isLoggedIn()){
var token = getToken();
var payload = token.split('.')[1];
payload = $window.atob(payload);
payload = JSON.parse(payload);
console.log(payload);
return {
email : payload.email,
name : payload.name,
hasPaid : payload.hasPaid // Here is my value
};
}
};
然后,在我的 APP.JS 中,我尝试调用该函数:
console.log(authentication.currentUser().hasPaid); // This works because when i call currentUser().name
获取令牌功能:
var getToken = function () {
return $window.localStorage['mean-token'];
};
提前致谢!
【问题讨论】:
-
很难跟上你的申请流程。
getToken()真的有效吗?您是否确认确实为token设置了一个值? -
@JonBlack 它肯定会起作用,因为 CurrentUser 函数对电子邮件和用户名成功运行。
-
那么当你
console.log(payload)时你看到了什么? -
@JonBlack 我在任何地方都看不到 console.log。我查看了开发人员控制台和节点控制台,但没有看到它在哪里说什么,甚至没有尝试
-
嗯,这很有趣。它至少应该显示一些东西。当您进行此服务器端调用时,您会在“网络”选项卡中看到什么?
标签: javascript angularjs json node.js json-web-token