Zurück zur Übersicht

Eine Angular Standalone-Komponente mit CaptchaFox vor Bot-Angriffen schützen

Zuletzt aktualisiert am 23. November 2023

Eine Angular Standalone-Komponente mit CaptchaFox vor Bot-Angriffen schützen

In diesem Artikel erklären wir, wie Sie das CaptchaFox-Widget in eine Angular Standalone-Komponente integrieren. Mit unserer bereitgestellten Bibliothek können Sie Ihre Anwendung sicherer gestalten, indem Sie die Benutzer auffordern, vor dem Absenden von Formularen eine CAPTCHA-Prüfung durchzuführen.

Was ist Angular?

Angular ist ein Typescript basiertes Framework zur Entwicklung von skalierbaren Webapplikationen. Der Fokus von Angular liegt auf Architektur, daher bringt es zahlreiche Bibliotheken zum Beispiel für Routing oder Client-Server Kommunikation mit.

Was sind Standalone Komponenten

Standalone Komompenten benötigen zum Einsatz keine NGModules. Das hat den Vorteil, dass sie in der gesamten Applikation verwendet werden können, ohne sie in Modulen zu deklarieren. Dadurch erspart man sich unnötigen Code und Verwaltungsaufwand.

Integration starten

Schritt 1: Installation von CaptchaFox

Um loszulegen, müssen Sie das CaptchaFox-Paket mit Ihrem bevorzugten Paketmanager installieren. Öffnen Sie Ihr Terminal in Ihrem Projekt und führen Sie den folgenden Befehl aus:

Terminal
npm install @captchafox/angular

Schritt 2: CaptchaFox in der App erlauben

Um die Komponente im gesamten Angular-Projekt zu verwenden muss diese nun in der appConfig.ts referenziert werden. Im forRoot() wird zusätzlich noch der von Ihnen generierten Site-Key hinzugefügt. Für Tests auf z.B. Localhost können Sie auch unsere Test Keys verwenden.

appConfig.ts
import { ApplicationConfig, importProvidersFrom } from '@angular/core';
import { provideRouter } from '@angular/router';

import { CaptchaFoxModule } from '@captchafox/angular';

import { routes } from './app.routes';

export const appConfig: ApplicationConfig = {
  providers: [provideRouter(routes),
    importProvidersFrom(CaptchaFoxModule.forRoot({
      siteKey: '<SITE_KEY>'
    }))
  ]
};

Schritt 3: Erstellen des Formulars

Als nächstes erstellen Sie ein Formular in Ihrer Angular-Anwendung. Dazu wird eine neue Komponente generiert und die Formularelemente hinzugefügt. Um diese nutzen zu können, fügen wir zuerst den FormBuilder im Konstruktor hinzu. Danach erstellen wir die Formgruppe.

form.component.ts
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormBuilder, ReactiveFormsModule } from '@angular/forms';

@Component({
  selector: 'app-form',
  standalone: true,
  imports: [CommonModule, ReactiveFormsModule],
  templateUrl: './form.component.html',
  styleUrl: './form.component.scss'
})
export class FormComponent {

  constructor(private formBuilder: FormBuilder) {}

  registerForm = this.formBuilder.group({
    mail: '',
    password: '',
  })
}

Nun kann das Formular auch in das zugehörige HTML hinzufügt werden. Das sieht wie folgt aus:

form.component.html
<form [formGroup]="registerForm" (ngSubmit)="onSubmit()">
    <div>
        <label for="mail">
          E-Mail
        </label>
        <input id="mail" type="mail" formControlName="mail">
      </div>
    
      <div>
        <label for="password">
          Passwort
        </label>
        <input id="password" type="password" formControlName="password">
      </div>

    <button class="button" type="submit">Registrieren</button>
</form>

Wir haben nun zwei Eingabe Felder und einen Button hinzugefügt. Für letzteren erstellen wir nun noch eine onSubmit Methode. Diese wird im Beispiel das Formular nur leeren und nicht abschicken.

form.component.ts
  onSubmit() {
    this.registerForm.reset();

    // Ihre Business Logik
  }

Schritt 4: CaptchaFox zum Formular hinzufügen

Da Sie im 2. Schritt die Komponente für das gesamte Projekt konfiguriert haben, müssen Sie das Modul nur noch in Ihrer Komponente importieren:

form.component.ts
@Component({
  selector: 'app-form',
  standalone: true,
  imports: [CommonModule, ReactiveFormsModule, CaptchaFoxModule],
  templateUrl: './form.component.html',
  styleUrls: ['./form.component.css']
})

Nun können Sie die CatpchaFox-Komponente auch in Ihr Formular integrieren. Dafür verwenden Sie einfach den HTML-Tag <ngx-captchafox> und geben der Komponente den Namen des Feldes über das Attribut formControlName mit.

form.component.html
<form [formGroup]="registerForm" (ngSubmit)="onSubmit()">
    <div>
        <label for="mail">
          E-Mail
        </label>
        <input id="mail" type="mail" formControlName="mail">
      </div>
    
      <div>
        <label for="password">
          Passwort
        </label>
        <input id="password" type="password" formControlName="password">
      </div>

      <ngx-captchafox formControlName="captchaToken"></ngx-captchafox>

    <button class="button" type="submit">Registrieren</button>
</form>

Zuletzt müssen Sie nun noch den Token zu Ihrer Formgruppe hinzufügen. Das könnte dann wie folgt aussehen:

form.component.ts
@Component({
  selector: 'app-form',
  standalone: true,
  imports: [CommonModule, ReactiveFormsModule, CaptchaFoxModule],
  templateUrl: './form.component.html',
  styleUrl: './form.component.scss'
})
export class FormComponent {

  constructor(private formBuilder: FormBuilder) {}

  registerForm = this.formBuilder.group({
    mail: '',
    password: '',
    captchaToken: new FormControl(null)
  })

  onSubmit() {
    this.registerForm.reset();

    // Ihre Business Logik
  }
}

Stellen Sie danach sicher, dass Sie das erhaltene Token in Ihrem Backend validieren, bevor Sie den Benutzer die Aktion ausführen lassen. Weitere Informationen über die API für die Seiten-Überprüfung finden Sie in der Dokumentation.

Nächste Schritte

Sie haben nun erfolgreich CaptchaFox in Ihre Angular Standalone Komponente integriert!

Sie können den Code Ihren Anforderungen entsprechend anpassen und zusätzliche Formluare in ihrer Angular-Anwendung schützen.

Wenn Sie tiefer in die Intergration eintauschen wollen, können Sie die offizielle Dokumentation lesen.

Bots bekämpfen und Benutzerdaten schützen.

Geben Sie Betrügern und Spammern keine Chance und schützen Sie Ihre Webseite noch heute mit CaptchaFox.

CaptchaFox