如何在应用程序模板中为经过身份验证的用户加载模型数据

时间:2018-03-24 22:14:44

标签: ember.js

我遵循ESA dummy app示例步骤来实现隐式授权身份验证。它工作正常,但我想知道如何在下面的情况下进行: - 通常我们在应用程序模板中定义navbar - application.js路由定义为that - 仅当用户通过身份验证时,我才需要在application模板的导航栏中的下拉列表中加载所有商店。 - 在application.hbs模板中,我按如下方式定义了select列表:

{{#if session.isAuthenticated}}
        <li class="nav-item">
          <select>
            {{#each model as |shop|}}
              <option value={{shop.id}}>{{shop.shopName}}</option>
            {{/each}}
          </select>
        </li>
      {{/if}}
  • 如果我将模型挂钩添加到application.js路由器:

    model() {
        if (this.get("session.isAuthenticated")) {
          return this.store.findAll('shop');
        }
      },
    

它可以工作,但我必须刷新页面才能填充下拉列表。好像,我的model挂钩被忽略,因为before_model挂钩验证了用户:

beforeModel() {
  return this._loadCurrentUser();
}

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

当您使用ember-simple-auth时,您可以将sessionAuthenticated方法添加到应用程序路由并刷新路径:

sessionAuthenticated() {
  this._super(...arguments);
  this.refresh();
}