Локальный жетон React-Admin Null - PullRequest
0 голосов
/ 16 марта 2020

Я использую реагирующий администратор, пытающийся получить доступ к серверу 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

...