防止多个帖子在react / mongoose中

时间:2018-03-03 17:21:41

标签: mongodb reactjs redux python-requests

我正在使用mongoose在reactjs / redux中开发应用程序。我有一个表格允许auth ppl添加评论文章,但如果用户点击10次1秒钟形式将发送10个请求..这是不好的。我怎么能阻止这个? 假设用户点击按钮一次,然后他需要等待5秒才能发送另一条评论。

1 个答案:

答案 0 :(得分:0)

对于前端部分,您可以为组件状态或redux添加时间戳,例如lastPostTime为该用户添加时间戳,然后将其与当前时间进行比较,如果它小于5秒或者您想要阻止帖子的其他时间范围,禁用该按钮。

这是一个虚构的组件示例:

class App extends Component {
  constructor() {
    super();
    this.state = {
      lastPostTime: null
    };
    this.handleCommentSubmit = this.handleCommentSubmit.bind(this);
    this.checkIfTimeoutPassed = this.checkIfTimeoutPassed.bind(this);
  }

  handleCommentSubmit(e) {
    if (this.checkIfTimeoutPassed()) {
      console.log('sent');
      this.setState({ lastPostTime: Date.now() });
    }
  }

  checkIfTimeoutPassed() {
    const postTimeOut = 5000;
    const { lastPostTime } = this.state;
    const timeSinceLastPost = Date.now() - lastPostTime;
    return !lastPostTime || timeSinceLastPost > postTimeOut;
  }

  render() {
    return (<button onClick={this.handleCommentSubmit}>Click me</button>);
  }
}

如果用户违反前端限制,在后端进行类似检查是有意义的。