放置jwt.sign代码时出现JWT错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了放置jwt.sign代码时出现JWT错误相关的知识,希望对你有一定的参考价值。
我正在努力创建一个身份验证系统,并试图弄清楚如何使用JWT。我正在使用Node,express,passport和mysql。我尝试在db.sync()方法之后创建“var token”,但这只会引发错误,但如果我在db.sync()之前放入“var token”,它会起作用吗?我应该这样做吗?提前致谢!
var jwt = require('jsonwebtoken');
var config = require('../config'),
db = require('../services/database'),
User = require('../models/user'),
Organisation = require('../models/organisation'),
Event = require('../models/event');
// The authentication controller.
var AuthController = {};
// Register a user.
AuthController.signUp = function(req, res) {
if(!req.body.username || !req.body.password || !req.body.email) {
res.json({ message: 'Please provide a username and a password.' });
} else {
var token = jwt.sign({ username: req.body.username }, config.keys.secret, { expiresIn: '30m' });
db.sync().then(function() {
var newUser = {
username: req.body.username,
password: req.body.password,
email: req.body.email,
temporarytoken: token
};
console.log(newUser.temporarytoken);
return User.create(newUser).then(function() {
res.status(201).json({ message: 'Account created!' });
});
}).catch(function(error) {
res.status(403).json({ message: 'Username already exists!' });
});
}
}
答案
你的错误信息是什么样的?
此外,如果您执行此代码,您是否看到错误?
db.sync().then(function() {
var token = jwt.sign({ username: req.body.username }, config.keys.secret, { expiresIn: '30m' });
var newUser = {
username: req.body.username,
password: req.body.password,
email: req.body.email,
temporarytoken: token
};
console.log(newUser.temporarytoken);
return User.create(newUser).then(function() {
res.status(201).json({ message: 'Account created!' });
});
附:为什么要将令牌保存到数据库?您应该将jwt发送到客户端,客户端将其保存到本地存储或cookie。这是jwt的重点。
以上是关于放置jwt.sign代码时出现JWT错误的主要内容,如果未能解决你的问题,请参考以下文章