2014-12-31 2 views
0

ПРОБЛЕМА: Я не знаю, как получить текущий сеанс в контроллере.Как получить атрибуты пользовательского сеанса с использованием Ember Simple Auth

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

CUSTOM Authenticator в ../app/authenticators/custom.js

var CustomAuthenticator = Base.extend({ 
    authenticate: function(credentials) { 
    return new Ember.RSVP.Promise(function (resolve, reject){ 
     var loginPromise = Ember.$.post('/api/login', {'email':credentials.identification, 'password':credentials.password}); 
     loginPromise.then(function (data){ 
     resolve({ 
      token: data.user.api_key, 
      userData: data.user 
     }); 
     }, function(error){ 
     reject(error); 
     }); 
    }); 
    } 
}); 

CUSTOM сессии в. ./app/sessions/custom.js

import Ember from 'ember'; 
import Session from 'simple-auth/session'; 

var CustomSession = Session.extend({ 
    after:'simple-auth', 
    currentUser: function(){ 
    return this.container.lookup('ember_simple_auth:session'); 
    }.property('currentUser') 
}); 

export default CustomSession; 

Initializer в ../app/initializers/authentication.js

import CustomAuthenticator from '../authenticators/custom'; 
import CustomSession from '../sessions/custom'; 

export default { 
    name:  'authentication', 
    before:  'simple-auth', 
    initialize: function(container) { 
    container.register('authenticator:custom', CustomAuthenticator); 
    container.register('session:custom', CustomSession); 
    } 
}; 

Я пытаюсь получить token и userData в одном из моих контроллеров с помощью this.get('session'), но это дает мне следующее:

Class {store: Class, __ember1420041799205: "ember297", __nextSuper: undefined, __ember_meta__: Object, constructor: function…} 

и я вижу ember_simple_auth:session ключ и значение в локальном хранилище браузера {"authenticator":"authenticator:custom","token":"123456789","userData":{"id":"1","email":"[email protected]","api_key":"123456789","expiry_time":"2014-12-31 14:02:56"}}

Я в принципе должен получить то, что в локальном хранилище. Как мне это сделать?

ответ

0

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

restore: function(data) { 
    return new Ember.RSVP.Promise(function (resolve, reject){ 
     console.log('RESTORE'); 
     if(!Ember.isEmpty(data.token)) { 
     console.log('Found token: ' + data.token); 
     resolve(data); 
     } else { 
     console.log('Token Not Found!'); 
     reject(); 
     } 
    }); 
}