Redux,行动,授权

时间:2016-02-14 00:45:45

标签: authorization redux redux-thunk

我目前正在使用 redux redux-thunk 中间件。

涉及有关行动调度的控制措施,例如:

  • 用户是否拥有此操作的足够权限?
  • 提示用户确认其操作( for destructive action

我相信将这些控件置于异步操作( thunk )中是可行的方法,因为:

  • 它保持我的代码DRYer(许多组件/视图可以触发 行动,而只有一个actionCreator用于所述行动
  • 这是应用程序中“有些事情发生”之前的最后一点。让它成为制定此类控制的战略性场所。

问题

  1. 我正在寻找其他redux用户的反馈。我很公平 对这个决定充满信心,但反馈很少(和存在 初级开发)让我怀疑。这是正确的方法吗? 授权控制何时使用redux?

  2. 如何将授权控制器转换为 的中间件即可。它会将auth控件保留在一个地方,而不是在每个actionCreator中复制它 的修改 当深入研究这种可能性时,它很快变得具有挑战性,因为中间件最初只接收(dispatch, getState),这意味着授权中间件需要“知道”正在调度哪个动作(或者正在使用哪个actionCreator),需要一个hacky-ish设置并最终被证明是不可靠的。

  3. 其他要点

    • 是的,这是客户端的。是的,我们也进行服务器端检查。
    • 我知道这些类型的控件不应该在我的store / redurs中。他们需要纯洁。

1 个答案:

答案 0 :(得分:2)

我认为你很适合自己的设置。 Thunk是编排程序流的好方法。还有像redux-saga这样的其他中间件,它有点复杂但据我所知你想做这样的事情(伪代码)?

function authorizeAndTriggerAction(forUser) {
  return function (dispatch) {
    return authorizeUser().then(
      action => dispatch(concreteAction(forUser)),
      error => dispatch(notAuthorized(forPerson, error))
    );
  };
}

这可以通过thunk完成。