В вашем коде две ошибки.
Во-первых, когда вы хотите использовать функцию, вы должны вызывать ее, используя ()
. В противном случае он действует как переменная, то есть вы можете присвоить ему новое значение или использовать его для назначения другой переменной.
app.post("/api/login", jwt.verifyToken, (req, res) => {
jwt.verifyJWT;
});
Должно быть ...
app.post("/api/login", jwt.verifyToken, (req, res) => {
jwt.verifyJWT(req, res);
});
Однако, так как Express вызывает функции, которые вы передаете в аргументах метода post()
, вы можете проще сказать:
app.post("/api/login", jwt.verifyToken, jwt.verifyJWT);
Вторая ошибка заключается в том, что вы используете неопределенные переменные в своих функциях в файле jwt.js. Вы должны передать эти значения в качестве аргументов для использования.
function verifyJWT() {
jwt.verify(req.token, "fortest", (err, authData) => {
if (err) {
res.sendStatus(403);
} else {
res.json(
`Logged in with ${req.token} and here is some data for you ${authData}`
);
}
});
}
function signJWT() {
jwt.sign({}, "fortest", (err, token) => {
if (err) {
res.sendStatus(511);
} else {
res.json({ token });
}
});
}
Должно быть ...
function verifyJWT(req, res) {
jwt.verify(req.token, "fortest", (err, authData) => {
if (err) {
res.sendStatus(403);
} else {
res.json(
`Logged in with ${req.token} and here is some data for you ${authData}`
);
}
});
}
function signJWT(req, res) {
jwt.sign({}, "fortest", (err, token) => {
if (err) {
res.sendStatus(511);
} else {
res.json({ token });
}
});
}