我有一个expressjs
服务器,该服务器使用sequelize
通过一些令牌连接到我的数据库,以保持连接状态。当客户端发送一个现有的令牌时,请求将获得该令牌并使其转到下一个功能,但是当客户端发送一个空的或不正确的令牌时,它会阻塞几分钟并且不再响应。
const Token = require('./models/token');
function isAuth(req, res, next) {
if (req.cookies.token) {
Token.findOne({where: {token: req.cookies.token}}).then(token => {
console.log("TOKEN");
if (!token) {
console.log("2");
res.clearCookie('token');
res.redirect("/");
} else
next();
})
} else {
console.log("1");
res.redirect("/");
}
};
当它由好记号令牌执行时,它会触发第一个console.log
,但对于无效的记号令牌,它不会触发任何一个,而是会被阻止。
var Sequelize = require('sequelize');
var sequelize = new Sequelize(process.env.DATABASE_URL);
var Token = sequelize.define('token', {
token: {
type: Sequelize.STRING,
unique: true,
allowNull: false
}
});
sequelize.sync().then(() => {
console.log('token table has been successfully created, if one doesn\'t exist');
}).catch(error => console.log('This error occured', error));
module.exports = Token;
我在Google上找不到另一个示例,我找到了一些东西,但是它与我的问题没有联系,即使我对其进行了测试,它仍然无法正常工作。
当我修改令牌以删除一些字符时,它保持很长的超时时间,但是当它为空时,请求就没有问题了。
我只向数据库发送了一个108字符的代码作为令牌,并且数据库只有15个条目。
请求达到2分钟后,浏览器将其取消,并且在服务器上不显示任何错误。
Executing (default): SELECT `id`, `token`, `createdAt`, `updatedAt` FROM `tokens` AS `token` WHERE `token`.`token` = 'token_invalid';
GET /api/loadUserCurrent - - ms - -