Как реализовать страницу входа с помощью JSON Web Token в приложении Ember с Express API - PullRequest
0 голосов
/ 08 февраля 2019

Я добавил аутентификацию для своего Express API, следуя этому руководству , и после тестирования моих секретных маршрутов все, кажется, работает правильно.Теперь мой вопрос: как это можно использовать на странице входа в приложение Ember?После получения секретного токена после успешного входа в систему как браузер узнает, что вы вошли в систему. Как можно выйти из системы?Как приложение ember узнает, кто вошел в систему?Есть ли какая-то особая мера безопасности, к которой я должен быть осторожен, работая над этим?

1 Ответ

0 голосов
/ 15 февраля 2019

Вы должны использовать аддоны, чтобы справиться с большей частью тяжелой работы за вас.

ember-simple-auth-token содержит инструкции по настройке, которые позволят вам создать маршрут для входа в систему, который займетимя пользователя / пароль и отправьте его на ваш сервер для проверки.Ответ токена будет доступен в вашем приложении, пока пользователь не выйдет из системы.

Пример выглядит как

import Controller from '@ember/controller';
import { inject } from '@ember/service';

export default Controller.extend({
  session: inject('session'),

  actions: {
    authenticate: function() {
      const credentials = this.getProperties('username', 'password');
      const authenticator = 'authenticator:token'; // or 'authenticator:jwt'

      this.get('session').authenticate(authenticator, credentials);
    }
  }
});

Вы также создаете маршрут выхода из системы, который обрабатывает выход из приложения и отправку любого запроса на выход на сервер.

ЕслиВозможно, вы должны настроить свой сервер по умолчанию, но вы можете настроить почти все.

Параметры аутентификации

ENV['ember-simple-auth-token'] = {
  tokenDataPropertyName: 'tokenData'; // Key in session to store token data
  refreshAccessTokens: true, // Enables access token refreshing
  tokenExpirationInvalidateSession: true, // Enables session invalidation on token expiration
  serverTokenRefreshEndpoint: '/api/token-refresh/', // Server endpoint to send refresh request
  refreshTokenPropertyName: 'refresh_token', // Key in server response that contains the refresh token
  tokenExpireName: 'exp', // Field containing token expiration
  refreshLeeway: 0 // Amount of time to send refresh request before token expiration
};

Мы были очень довольны этим дополнением впроизводство в течение 3 лет, и я очень рекомендую его.

...