Ember simple auth как обновить когда данные аутентификации доступны - PullRequest
0 голосов
/ 30 октября 2018

Ember приложение использует логин adfs. при успешном входе в систему adfs будет перенаправлен на веб-приложение ember с маршрутом и параметрами запроса. эти параметры запроса содержат

access_token
refresh_token
user_id
scope

Мне нужно обновить сеанс аутентификации ember этими учетными данными. Как я могу достичь этого?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

djamel ваш ответ работает на меня, и я изменил код, используя ваш пример, как показано ниже

import Base from 'ember-simple-auth/authenticators/base';
import {
  isEmpty
} from '@ember/utils';
export default Base.extend({
  authenticate(data) {
     return new Promise((resolve, reject) => {

       if(data.access_token!=null){
       resolve({

                     access_token: data.access_token,
                     id: data.id,
                     agreement:data.agreement
                   });
   }else{
    reject();
   }  })

  },

 restore(data) {
   console.log(data)
    return new Promise((resolve, reject) => {

      if (!isEmpty(data.access_token)) {
        resolve(data);
      } else {
        reject();
      }    });
  }
});

кроме того, что я должен был добавить

ENV ['ember-simple-auth'] = { routeAfterAuthentication: authenticated.index },

также в конфигурационной среде.

0 голосов
/ 30 октября 2018

Вам понадобится authenticate сеанс с вами params .
Чтобы иметь возможность аутентифицировать ваш сеанс, вам нужно создать authenticator . По сути, это даст вам некоторый метод для обработки вашего сеанса (invalidateSession, authenticate, restoreSession и т. Д.).
Для создания аутентификатора проверьте http://ember -simple-auth.com / api / classes / BaseAuthenticator.html Это будет выглядеть примерно так https://jsfiddle.net/e7nzoa6y/ , но это не исключение, вам придется настроить его с вашей конечной точкой и прочим

Тогда, когда у вас будет свой аутентификатор, проверьте документ на http://ember -simple-auth.com / API / классы / BaseAuthenticator.html

В вашем контроллере, после введения службы session, Вы сможете вызвать функцию аутентификации с чем-то, похожим на

this.session.authenticate(
  'authenticator:YOUR_AUTHENTICATOR', queryParams
);
...