3

我想知道是否有人对 Ember.js 以及路由和 pushstate 有任何想法。

用于身份验证的典型 Ember 示例是:

aStateManager = Em.StateManager.create({
    initialState: 'unauthenticated',
    authenticated: Em.State.create({}),
    unauthenticated: Em.State.create({
      authenticate: function(stateManager, context){
        stateManager.goToState('authenticated')
      }
    })
  })

  aStateManager.send('authenticate')

如果始终将用户发送到根 url,这将起作用。但是,如果用户在地址栏中键入 url,例如“/api/resource/1”,有没有办法判断用户是否在每个状态下都经过身份验证?

我想我正在寻找的是像 before_filter 这样的导轨。

有没有人为这种常见情况提出解决方案?

4

1 回答 1

1

对于任何类型的身份验证,我们将面临的问题是用户可以完全访问所有模型,并且可以更改其中的数据并赋予自己以前没有的权限。每次联系服务器都会很痛苦。

我能想到的一种解决方案是使用 freezable mixin 和对象的 isDirty 标志。我们可以将用户的权限作为 DS 模型(如果我们使用 ember 数据),然后将其定义为冻结。现在我们创建一个权限检查 mixin 来检查模型是否脏(即它已被更改)。并且还要尊重所有其他代码部分的冻结状态。

当然,我还没有想到其他各种用例,但这应该是一个有价值的起点。

于 2012-05-31T06:17:23.847 回答