【问题标题】:ember get current user information from session and setting currentUser to use inside templateember 从会话中获取当前用户信息并将 currentUser 设置为在模板内使用
【发布时间】:2016-07-20 01:59:27
【问题描述】:

我在后端使用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 助手用作:

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

【问题讨论】:

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


    【解决方案1】:

    您的会话数据在会话对象数据属性中可用。 查看docs 中的“身份验证”方法了解更多信息。

    因此您可以访问它,即 {{session.data.authenticated.email}} 。根据您的会话数据,您可以在控制器中创建一个计算属性,以便在模板中看起来更好......

      currentUser: Ember.computed('session.data', function() {
        return this.get('session.data.authenticated.currentUser');
      })
    

    【讨论】:

    • 我需要更多关于“Ember.component”的帮助 我已将上述代码添加到控制器,但我仍然无法访问 {{currentUser.email}} 或 {{session.currentUser. email}} 内的模板。虽然 {{session.data.authenticated.email}} 工作正常,但感谢您在 docs 中指出这一点
    • 好吧,您只需将计算属性更改为return this.get('session.data.authenticated'),这会将您的会话数据对象别名为模板中的 currentUser
    猜你喜欢
    • 2021-06-16
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2023-03-10
    • 2015-04-30
    相关资源
    最近更新 更多