Я использую реагирующий администратор, пытающийся получить доступ к серверу Restful API Node. Я могу войти в систему, и я пытаюсь составить список пользователей, но я получаю ошибку 401 Unauthorized.
В заголовках запроса:
authorization: Bearer null
И сервер возвращает ошибку:
JsonWebTokenError: jwt malformed
На клиенте response-admin dataProvider. js:
const apiUrl = "http://localhost:4000/api/v1";
const token = localStorage.getItem("token");
console.log("Token: " + token);
const httpClient = (url, options = {}) => {
if (!options.headers) {
options.headers = new Headers({ Accept: "application/json" });
}
options.headers.set("Authorization", `Bearer ${token}`);
return fetchUtils.fetchJson(url, options);
};
На сервере аутентификация. js:
const passport = require('passport');
const httpStatus = require('http-status');
const AppError = require('../utils/AppError');
const { roleRights } = require('../config/roles');
const verifyCallback = (req, resolve, reject, requiredRights) => async (err, user, info) => {
console.log('requiredRights: ' + requiredRights + '\n Info: ' + info + '\n User: ' + user);
if (err || info || !user) {
return reject(new AppError(httpStatus.UNAUTHORIZED, 'Please authenticate'));
}
req.user = user;
if (requiredRights.length) {
const userRights = roleRights.get(user.role);
console.log('userRights: ' + userRights);
const hasRequiredRights = requiredRights.every(requiredRight => userRights.includes(requiredRight));
if (!hasRequiredRights && req.params.userId !== user.id) {
return reject(new AppError(httpStatus.FORBIDDEN, 'Forbidden'));
}
}
resolve();
};
const auth = (...requiredRights) => async (req, res, next) => {
console.log('RES: ' + res);
return new Promise((resolve, reject) => {
passport.authenticate('jwt', { session: false }, verifyCallback(req, resolve, reject, requiredRights))(req, res, next);
})
.then(() => next())
.catch(err => next(err));
};
module.exports = auth;
Но иногда токен не является нулевым в заголовках запроса, и это работает ... Почему иногда токен является нулевым?
Спасибо и С уважением
Ludo