如何避免ember路由器进入connectOutlets

时间:2013-01-17 18:06:54

标签: ember.js ember-old-router

我正在尝试使用Ember添加一些基本身份验证层,以避免未登录的用户访问“受限”状态。

问题是我正在'enter'事件中检查身份验证状态,但即使我从那里重定向到另一个路由,也总是调用'connectOutlets'。

有没有办法停止从'enter'状态进入'connectOutlets'状态?将身份验证检查置于'connectOutlets'状态

会感觉有点脏

1 个答案:

答案 0 :(得分:0)

  

有没有办法停止从'enter'状态进入'connectOutlets'状态?将身份验证检查置于'connectOutlets'状态

会感觉有点脏

AFAIK没有直接的方法来做到这一点。有一些尝试解决方法,但我不建议你的用例。

  

我正在尝试使用Ember添加一些基本身份验证层,以避免未登录的用户访问“受限”状态。

Ember并没有'限制'状态。将“状态”视为“用户要求的内容”,而不一定是他们将获得访问权限的内容。因此,用户可以随时更改网址并进入任何“状态”,但您的应用在每种状态下的行为都会根据模型数据而改变。控制器根据用户的授权级别和API返回的数据决定显示的内容。

到目前为止,最简单的方法是将应用程序模板包装在授权检查中。例如:

{{#if isAuthorized}}
  <h1>Welcome!<h1>
  {{outlet}}
{{else}}
  {{#if isLoggedIn}}
    <p>Sorry, you are not authorized to view this page</p>
  {{else}}
    {{view App.LoginForm }}
  {{/if}}
{{/if}}

然后只需将isAuthorizedisLoggedIn计算属性添加到应用程序控制器。