ember从会话中获取当前用户信息并将currentUser设置为在模板内使用

时间:2016-07-20 01:59:27

标签: ruby-on-rails ember.js ember-simple-auth

我在后端使用ember-simple-auth库和基于rails令牌的身份验证。 ember版本是:

ember-cli: 2.6.2
node: 6.3.0
ember-simple-auth: 1.1.0

我已成功登录用户。但无法访问当前用户信息。以下代码正在运行:

    {{#if session.isAuthenticated}}
      <p>i m logged in</p>
      <a href="#" {{action 'logout'}}>Logout</a>
    {{else}}
      <p>i m not logged in</p>
    {{/if}}

但以下代码无效

{{session.store.authenticated.email}}

我想获取用户信息但失败了。所以,我深入研究了母校并使用了ember helper:

<p>{{log session}}</p>

它帮助我和我能够获得当前用户信息,如:

<p>{{session.session.content.authenticated.email}}</p>

哪个好,但我想要以下内容:

<p>{{session.currentUser.email}}</p> 

或简单地说:

<p>{{currentUser.email}}</p>

如何更改我的应用程序控制器,以便能够以更好的方式获取当前用户信息。我的应用程序控制器代码是:

// /app/controllers/application.js

import Ember from 'ember';

export default Ember.Controller.extend({
  session: Ember.inject.service('session'),

  actions: {
    logout() {
      this.flash.success('Successfully logged out!', 5000);
      this.get('session').invalidate();
    }
  }
});

1 个答案:

答案 0 :(得分:0)

您的会话数据在会话对象数据属性中可用。 查看&#34;身份验证&#34; docs中的方法以获取更多信息。

所以你可以访问它,function onMessage(msg) { var to = msg.getAttribute('to'); var from = msg.getAttribute('from'); var type = msg.getAttribute('type'); var elems = msg.getElementsByTagName('body'); if (type == "chat" && elems.length > 0) { var body = elems[0]; console.log('CHAT: I got a message from ' + from + ': ' + Strophe.getText(body)); } else if (type == "groupchat" && elems.length > 0) { var body = elems[0]; var room = Strophe.unescapeNode(Strophe.getNodeFromJid(from)); var nick = Strophe.getResourceFromJid(from); console.log('GROUP CHAT: I got a message from ' + nick + ': ' + Strophe.getText(body) + ' in room: ' + room); } // we must return true to keep the handler alive. // returning false would remove it after it finishes. return true; } 。根据您的会话数据,您可以在控制器中创建计算属性,使其在模板中看起来更好......

{{session.data.authenticated.email}}