Требуется помощь примера Ember-Simple-Auth currentUser

Итак, я понимаю, что пример учетной записи здесь: https://github.com/simplabs/ember-simple-auth/blob/8863c032fcea6148a5b3365be5d66dc2389d301d/examples/4-authenticated-account.html

Предоставляет код для получения текущего входа в учетную запись. У меня всего несколько вопросов по этому примеру, поскольку я пытаюсь заставить его работать в приложении Ember-CLI.

Однако в примере используется SimpleAuth, я не знаю, откуда он берется, поскольку я пытаюсь import SimpleAuth from ..., но я не знаю, из какого файла его импортировать.

Кроме того, мне интересно, должен ли ответ сервера теперь также возвращать user_id с access_token/refresh_token?

Если да, то совместим ли этот oauth?

РЕДАКТИРОВАТЬ: мой текущий код

// app/initializers/oauth-custom.js
import Ember from 'ember';
import OAuthCustomAuthenticator from 'front/authenticators/oauth-custom';
import Session from 'simple-auth/session';


export default {
    name: 'oauth-custom',
    before: 'simple-auth',

    initialize: function(container) {
        Session.reopen({
            currentUser: function() {
                var user_id = this.get('user_id');
                if (!Ember.isEmpty(user_id)) {
                    return container.lookup('store:main').find('user', user_id);
                }
            }.property('user_id')
        });
        container.register(
            'oauth-custom:oauth2-password-grant',
            OAuthCustomAuthenticator
        );
    }
};

Аутентификация работает отлично, просто я не вижу никакого вызова /user/id, который пытается сделать ember.

Пример ответа от сервера:

{
    "access_token": "asdf",
    "token_type": "bearer",
    "expires": 1406082157,
    "expires_in": 604800,
    "refresh_token": "asdf",
    "user_id": "1"
}

person user1952811    schedule 15.07.2014    source источник


Ответы (1)


Глобальный SimpleAuth определен только в браузерном дистрибутиве библиотеки. Когда вы используете ember-cli, вы импортируете отдельные компоненты вместо доступа к ним через глобальный (см., например, этот пример: http://log.simplabs.com/post/90339547725/using-ember-simple-auth-with-ember-cli).

Например, получите сеанс, который вы бы сделали, например:

import Session from 'simple-auth/session';

Session.reopen({
  …
});

Приведенный выше пример требует, чтобы сервер включил user_id в ответ, который не соответствует спецификации OAuth 2.0, а является настройкой. Если вы хотите/должны быть совместимы, вы можете получить текущего пользователя, например. через GET /me или что-то в этом роде. так после аутентификации сеанса.

person marcoow    schedule 15.07.2014
comment
Я обновил свой вопрос с образцом кода и ответом с сервера. - person user1952811; 16.07.2014
comment
Значит проблема не решена? Можете ли вы предоставить исходный код вашего аутентификатора? - person marcoow; 16.07.2014
comment
Кажется, это работает на самом деле после того, как я внес изменения. Спасибо за помощь :) - person user1952811; 16.07.2014