2015-05-11 2 views
4

У меня есть приложение EmberJS, созданное с использованием ember-cli. В настоящее время я использую simple-auth с пользовательским аутентификатором.Как сохранить текущие данные пользователя в EmberJS?

В аутентификаторе, когда пользователь входит в систему, я хочу сохранить его данные, чтобы потом использовать его. У меня есть следующий код:

authenticate: function(options) { 
    var self = this; 
    return new Ember.RSVP.Promise(function(resolve, reject){ 
    API.user.login(options.username, options.password, true).done(function(data) { 
     // @TODO: Save current user 
     resolve(data.id); 
    }).fail(function() { 
     reject(); 
    }); 
    }); 
}, 

данных пользователя доступна в переменной data.user.

Я пробовал использовать Ember.set('App.currentUser', data.user);, но он не работает. Что мне делать?

ответ

0

Я закончил создание настраиваемого контроллера Sessions и установил там текущий объект пользователя, а затем создал псевдоним из контроллер приложения.

Что-то вроде, что в this article.

1

Я думаю, что это проще всего использовать инициализатор. Theres несколько способов вы можете разрешить пользователю, я думаю, что это будет проще, если вы передаете USER_EMAIL наряду с маркером гранта от API

//initializers/session-user.js 

import Ember from "ember"; 
import Session from "simple-auth/session"; 
export function initialize(container) { 
    Session.reopen({ 
    setCurrentUser: function() { 
     var accessToken = this.get('access_token'); 
     var self = this; 
     if (!Ember.isEmpty(accessToken)) { 
      return container.lookup('store:main').find('user', { 
      email: self.get('user_email') 
      }).then(function (users){ 
      self.set('currentUser', users.get('firstObject')); 
      }); 
     } 
     }.observes('access_token') 
    }); 
} 

export default { 
    name: 'session-user', 
    before: 'simple-auth', 
    initialize: initialize 
}; 

Проверить эту нить для которой идея этого пришли: http://discuss.emberjs.com/t/best-practice-for-loading-and-persisting-current-user-in-an-authenticated-system/6987

И если вы используете simple-auth> 0.8.0-beta.1, вам нужно будет отрегулировать инициализатор

+0

Звучит хорошо, но есть одна проблема. Я уже получаю пользовательский объект из API входа. Есть ли способ получить доступ к объекту 'Session' от аутентификатора? – Louy

Смежные вопросы