【问题标题】:How do I get attributes of Custom Session using Ember Simple Auth如何使用 Ember Simple Auth 获取自定义会话的属性
【发布时间】:2014-12-31 16:08:42
【问题描述】:

问题:我不知道如何在控制器中获取当前会话。

我有一个自定义身份验证器、自定义会话和初始化器,定义如下:

../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);
      });
    });
  }
});

../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;

../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);
  }
};

我正在尝试使用this.get('session') 在我的一个控制器中获取tokenuserData,但它给了我以下信息:

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

我在本地浏览器存储 {"authenticator":"authenticator:custom","token":"123456789","userData":{"id":"1","email":"something@email.com","api_key":"123456789","expiry_time":"2014-12-31 14:02:56"}} 中看到了 ember_simple_auth:session 键和值

我基本上需要获取本地存储中的内容。我该怎么做?

【问题讨论】:

    标签: session ember.js ember-simple-auth authenticator


    【解决方案1】:

    啊,我发现了问题所在。第一次进行身份验证时,会话变量在那里,但刷新页面会删除会话的内容,因为我的身份验证器中没有恢复功能。

      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();
          }
        });
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多