如何在ember-simple-auth中访问会话属性?

3

我正在使用自定义的Facebook认证器,非常类似于ember-simple-auth example中提供的认证器。我在这里将属性accountIDaccessToken注入到会话中:

if (fbResponse.status === 'connected') {
  console.log("AccountID: " + fbResponse.authResponse.userID);
  Ember.run(function() {
  resolve({
     accessToken: fbResponse.authResponse.accessToken,
     accountID: fbResponse.authResponse.userID
  });
});

如果我正确地阅读了文档,那么在任何控制器中,我应该能够使用session.accountID来访问accountID。但是,我唯一能找到的方法是通过session.store._lastData.accountID,这可能不是正确的方法。
更具体地说,在控制器中,我有一个操作:
createRental: function() {
      var session = this.get('session');
      console.log(session.accountID); // undefined
      console.log(session.store._lastData.accountID); // '123456'

有使用过ember-simple-auth的经验的人知道问题是什么吗?谢谢!

1个回答

6
您需要使用get:
this.get('session.accountID')

或者

var session = this.get('session');
session.get('accountID')

在一个模型中怎么样?我想在受保护的资源的计算属性中访问我已经附加到会话中的用户对象。 - Graeme Stuart
会话在模型中不可用。但是您可以使用Ember的依赖注入API(http://emberjs.com/guides/understanding-ember/dependency-injection-and-service-lookup/#toc_dependency-injection-with-code-register-inject-code)手动注入它到自定义初始化器中。 - marcoow
在控制台中对我不起作用,使用Ember Inspector提供的$E对象。例如,$E.get('session.isAuthenticated')可以工作,但是我无法使用此答案中的方法访问$E.session.store._lastData.secure内部的任何内容。在模板中使用类似的结果; ..._lastData.secure.foo被定义但不是session.foo - bright-star
3
永远不要通过 session 直接访问 store。在模板中使用 session.secure.foo - marcoow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接