【发布时间】:2024-04-29 18:55:01
【问题描述】:
我正在构建一个使用 JWT 进行身份验证的简单应用程序。但是我不断收到错误消息,说我GET 需要回调函数。
我会期待什么?
我应该取回当前用户的数据。
我实际上得到了什么?
错误:Route.get() 需要一个回调函数但得到了一个 [object Object]
路线:
const authenticate = require("../middlewares/authenticate");
const usersController = require("../controllers").users;
app.get("/users/me", authenticate, usersController.getMe);
型号:
"use strict";
const jwt = require("jsonwebtoken");
module.exports = (sequelize, DataTypes) => {
var User = sequelize.define(
"User",
{
email: DataTypes.STRING,
password: DataTypes.STRING
},
{
classMethods: {
associate: function(models) {
// associations can be defined here
},
findByToken: function(token) {
const User = this;
let decoded;
try {
decoded = jwt.verify(token, "leogoesger");
} catch (e) {
console.log(e);
}
return User.find({ where: { email: decoded.email } });
}
}
}
);
return User;
};
中间件:
const { User } = require("../models/user");
const authenticate = (req, res, next) => {
console.log("called here");
const token = req.header("x-auth");
User.findByToken(token)
.then(user => {
if (!user) {
}
req.user = user;
req.token = token;
next();
})
.catch(e => {
res.status(401).send(e);
});
};
module.exports = { authenticate };
控制器:
module.exports = {
getMe(req, res) {
res.status(200).send({ message: "hello" });
}
};
【问题讨论】:
-
向我们展示如何导入带有
authenticate和getMe的模块。我猜你没有正确地做到这一点,所以当你认为你有你想要的功能时,你没有。另外,请添加错误消息的确切措辞。 -
已添加导入。错误信息在那里。
标签: express authentication jwt express-jwt stateless-session