【问题标题】:React Redux JWT pause async request before start a new oneReact Redux JWT 在开始一个新请求之前暂停异步请求
【发布时间】:2020-09-24 09:38:54
【问题描述】:

好的,伙计们,这是我在这里的第一篇文章,因为我非常绝望,所以我会向你们寻求帮助。 我在 redux-thunk 中遇到了异步请求问题。

看:
我有 react-redux-jwt 身份验证,并且我在每个请求上都将旧令牌列入黑名单,并且使用快速中间件,我正在为请求用户发送一个新令牌。当用户使用过期令牌之一(在数据库中标记)询问服务器时,BOOM -> 401。但是一切都很好,当我的调度看起来像这样时:

// imports
class Components extends React.Component {

  // ...rest

  firstTrigger(data) {
    const {dispatch} = this.props;
    dispatch(anyActions.firstAction(data));
  }

  secondTrigger(data) {
    const {dispatch} = this.props;
    dispatch(anyOtherActions.secondAction(data));
  }

  render() {
    return <div >
      // ... rest
        <button onClick={this.firstTrigger}> Trigger 1 </button> 
        <button onClick={this.secondTrigger}> Trigger 2 </button> 
      </div>;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

当我必须像这样在某一时刻执行一些操作时,乐趣就开始了:

// imports
    class Components extends React.Component {

      // ...rest

      anyTrigger(data) {
        const {dispatch} = this.props;
        dispatch(anyActions.firstAction(data));
        dispatch(anyOtherActions.secondAction(data));
      }

      render() {
        return <div >
          // ... rest
            <button onClick={this.anyTrigger}> Trigger two actions </button> 
          </div>;
      }
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

现在你们大概猜到那里发生了什么。第一个使用自定义 axios 请求(使用令牌 ofc)去服务器的查询,一切都很好,所以它做我想要的,获取一个新令牌并将旧令牌列入黑名单,然后返回一个全新的令牌 然后 第二个动作被派发并使用旧令牌发送(与第一个动作相同),但该令牌已被第一个请求和 BOOM -> 401 列入黑名单。因此我很生气。我几乎尝试了所有方法:自定义队列包、自定义状态的标志、redux 中间件、sagas、中间件级别的缓冲操作...
也许这是一个愚蠢的问题,但我在 PHP 中长大,我不知道如何解决这个问题。也许你有任何其他安全的方式来使用 react-redux 处理 JWT?或者你有一些想法如何暂停请求直到前一个结束?
哦,对不起我的英语,但我认为你应该明白我要说的话。

【问题讨论】:

    标签: javascript reactjs redux jwt middleware


    【解决方案1】:

    已解决, 我刚刚停止使用 redux 中间件,并从https://gist.github.com/mkjiau/650013a99c341c9f23ca00ccb213db1c 安装拦截器目前对我来说最好的解决方案。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多