如何避免在 angular 应用程序中出现一系列输入?

How can I avoid a sequence of inputs followed in the angular application?

我正在学习angular,我遇到了这个问题。我怎样才能防止用户通过连续多次输入表格来阻止程序泛滥......例如使用这个 javascript:

javascript:for(var i=0;i<9999999;i++){ document.getElementByTagName("button")[0].click();

那是我的 angular 代码: 组件:

export class InsertTODO implements OnInit {
constructor(private angularFire: AngularFireDatabase) { }
ngOnInit() {
}
form_submit(f: NgForm) {
this.angularFire.list('todos').push(
  {
    name: f.controls.name.value
  }).then((t: any) => console.log('recorded data ' + t.key),
   (e: any) => console.log(e.message));
  f.controls.name.setValue('');
}

查看:

<h1> WorkZone TODO </h1>
<form #f="ngForm" (submit)="form_submit(f)">
  <input type="text" ngModel name="name" placeholder="TODO">
  <br/>
  <br/>
  <button type="submit">Insert</button>
  <button type="reset">Clear</button>
</form>

这是在线 workzone.tk 部署在 firebase 托管

谢谢大家!

阻止多个 post 并不容易,无论如何,如果您在应用程序(客户端)中进行限制,仍然有人可以使用某些自动化工具向您的网站发出多个重复请求。例如,如果您使用 fiddler,您可以多次播放相同的请求。即使使用开发人员工具也可以实现这一点,您可以在其中重播任何请求。

这不能在客户端处理。您只需在服务器端处理。

以下是您可以尝试的几种方法。

  1. 在您的应用程序中实施 CAPTCHA/re-CAPTCHA。这很容易 进行集成,您会在 Angular 中找到很多插件供您使用。

  2. 你也可以想到基于IP的限制,如果来自特定的IP, 你收到多个请求,你可以阻止它一段时间。

  3. 您可以随时在服务器 side/db 端检查是否已经有相同的记录 存在,如果存在则拒绝请求。