【问题标题】:Redux, actions, authorizationRedux,动作,授权
【发布时间】:2016-05-25 01:11:14
【问题描述】:

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

当涉及到关于动作调度的控制时,例如:

  • 用户是否有足够的权限执行此操作?
  • 提示用户确认他的操作(用于破坏性操作

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

  • 它使我的代码保持干燥(许多组件/视图可能会触发 动作,而所述动作只有一个动作创建者
  • 这是应用程序中“发生某事”之前的最后一点。让它感觉像是进行此类控制的战略场所。

问题

  1. 我正在寻找其他 redux 用户的反馈。我相当 对这个决定充满信心,但几乎没有反馈( 初级开发者)让我怀疑。这是正确的方法吗 授权 使用 redux 时的控件?

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

其他要点

  • 是的,这是客户端。是的,我们还进行服务器端检查。
  • 我知道这些类型的控件不应该出现在我的商店/减速器中。它们必须是纯净的。

【问题讨论】:

    标签: authorization redux redux-thunk


    【解决方案1】:

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

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

    这可以通过 thunk 来完成。

    【讨论】:

    • 是的,这就是我们推荐的。这个,或者类似 Redux Saga 的东西,用于复杂的工作流程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多