Проверка подлинности на основе токенов для реагирующего интерфейса - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь использовать аутентификацию на основе JWT, я не уверен, как защитить маршруты, если я сохраняю токен в cookie, как показано ниже

import Cookies from 'universal-cookie';

const cookies = new Cookies();

const authService = {
  isAuthenticated () {
    if (cookies.get('auth')) {
      return true;
    }
    return false;
  },
  signIn (data, cb) {
    cookies.set('auth', true, { path: '/' });
    setTimeout(cb, 100);
  },
  signOut (cb) {
    cookies.remove('auth');
    setTimeout(cb, 100);
  }
};

export default authService;

он проверит куки-файл авторизации и разрешит пользователю маршруты. Как я могу сделать маршруты защищенными и проверять каждый раз, когда токен действителен или нет, а не просто проверять, присутствует ли токен или нет.

const PrivateRoute = ({ component: Component, ...rest }) => (
  <Route
    {...rest}
    render={props => (
      authService.isAuthenticated()
        ? <Component {...props} />
        : <Redirect to={
          {
            pathname: '/',
            state: { target: props.location }
          }}
        />
    )}
  />
);

можно обойти эту проверку, добавив объект вручную в cookie с помощью инструментов разработчика браузера, как я могу защитить свои маршруты веб-интерфейса.

1 Ответ

0 голосов
/ 26 апреля 2018

Ну, похоже, вы неправильно используете JWT, когда вы подписываете свой jwt на стороне сервера, клиент получает зашифрованный токен, который может быть частично декодирован на стороне вашего клиента, но каждый логин \ обновление \ и т.д. токен должен проверяться на стороне вашего сервера, где вы можете полностью декодировать токен , если токен не является настоящим токеном \ истек срок действия, сервер должен ответить на ошибку, и любой запрос с этим токеном не должен выполняться.

я настоятельно рекомендую вам прочитать больше о jwt, вы можете посмотреть на:

jwt.io - официальный сайт

jwt-express - пакет npm для проверки токена на стороне сервера

...