Friedrich Siever

15. November 2023

Strapi Double Opt-In E-mail und Passwort für App-User

von: Friedrich Siever | Last Updated: 13.01.23

Intro

Die Datenschutz-Grundverordnung (DSGVO / GDPR ) in der EU legt strenge Regeln für die Verarbeitung personenbezogener Daten fest, einschließlich der Handhabung von Benutzerdaten. Ein “Double Opt-In”-Verfahren, bei dem Benutzer nach der Anmeldung eine Bestätigungs-E-Mail erhalten und auf einen Bestätigungslink klicken müssen, ist eine bewährte Methode, um sicherzustellen, dass die Benutzer ihre Anmeldung tatsächlich bestätigen.

Wichtiger Hinweis: Hier geht es ausdrücklich nicht um Rechtsberatung, die ich sehr gerne den darauf spezialisierten Fachanwälten überlasse. In diesem Artikel zeige ich technische Möglichkeiten auf, Strapi mit einem entsprechenden Double Opt-In auszustatten, sodass dem Aufbau deiner eigenen Crowd nichts mehr im Wege steht.

Verständnis des Double Opt-In-Verfahrens

Das Double Opt-In-Verfahren ist ein wesentlicher Bestandteil der Datenschutzbestimmungen, insbesondere im Kontext der Datenschutz-Grundverordnung (DSGVO) in der Europäischen Union. Dieses Verfahren dient dazu, sicherzustellen, dass die Anmeldung von Benutzern zu Newslettern, Plattformen oder Diensten rechtmäßig und nachweisbar erfolgt.

Es besteht aus zwei Schritten:

Schritt 1: Die Anmeldung Ein Benutzer meldet sich für einen Dienst an, indem er seine E-Mail-Adresse und gegebenenfalls weitere Informationen angibt.

Schritt 2: Die Bestätigung Nach der Anmeldung erhält der Benutzer eine E-Mail mit einem Bestätigungslink oder -code. Dieser muss vom Benutzer aktiviert werden, um die Anmeldung abzuschließen.

Warum ist das Double Opt-In-Verfahren wichtig?

  • Rechtliche Konformität: Das Verfahren entspricht den Anforderungen der DSGVO und anderer Datenschutzbestimmungen.
  • Eindeutige Identifizierung: Unternehmen können sicher sein, dass die E-Mail-Adresse des Benutzers gültig ist und ihm gehört.
  • Zustimmungsnachweis: Unternehmen können nachweisen, dass der Benutzer der Verwendung seiner E-Mail-Adresse zugestimmt hat.

Umsetzung in Strapi

Strapi bietet viele Möglichkeiten, Benutzer in deiner App über E-Mail und das Double-Opt-In-Verfahren zu registrieren. Die Plattform bringt von Natur aus viele Funktionen mit, die du verwenden kannst, um dies zu realisieren. Leider ist die offizielle Dokumentation manchmal etwas verwirrend. In diesem Artikel möchte ich meine Erfahrungen und Lösungen teilen, um eine einfache Benutzerregistrierung mit E-Mail und Double-Opt-In in Strapi einzurichten.

Die Herausforderung

Die Herausforderung bei der Implementierung eines Double-Opt-In-Verfahrens in Strapi besteht darin, den E-Mail-Versand zuverlässig einzurichten. Viele Benutzer haben im Strapi-Forum über Schwierigkeiten berichtet, dieses Erfordernis zu erfüllen. Es gibt verschiedene Ansätze, die nicht immer zum gewünschten Ergebnis führen.

Meine Lösung

In diesem Artikel werde ich meine Lösung vorstellen, wie du das Double-Opt-In Verfahren in Strapi erfolgreich umsetzen kannst. Wir werden den E-Mail-Versand zuverlässig einrichten, um sicherzustellen, dass die Bestätigungs-E-Mail an die Benutzer gesendet wird.

Das gewünschte Verhalten

In den Anfangsphasen eines Projekts reicht oft eine einfache Anmeldung per E-Mail und Passwort aus. Die Implementierung von erweiterten Authentifizierungsmethoden mit externen Anbietern ist zwar großartig, kann jedoch in der Anfangsphase eines Start-ups oder MVP-Projekts erst einmal vernachlässigt werden.

Außerdem liefert eine eigene einfache Implementierung von Passwort und Email auch Vorteile.

  1. Unabhängigkeit von Drittanbietern: Du behältst die volle Kontrolle über die Benutzeranmeldung, ohne von Drittanbietern abhängig zu sein. Du kannst die Benutzerdaten in deiner eigenen Datenbank speichern und verwalten.

  2. Datenschutzkontrolle: Mit eigener E-Mail-Passwort-Authentifizierung behältst du die Kontrolle über Benutzerdaten und Datenschutzrichtlinien. Du bestimmst, wie Benutzerdaten erfasst, gespeichert und verarbeitet werden.

  3. Flexibilität: Du kannst die Benutzerregistrierung und -anmeldung nach deinen eigenen Anforderungen anpassen, ohne auf die Beschränkungen der API von Drittanbietern Rücksicht nehmen zu müssen.

  4. Schnellere Implementierung: Die einfache E-Mail-Passwort-Authentifizierung erfordert in der Regel weniger Implementierungsaufwand als die Integration mehrerer Drittanbieter-Authentifizierungsdienste.

  5. Benutzerfreundlichkeit: Benutzer sind oft mit der klassischen E-Mail-Passwort-Authentifizierung vertraut und müssen sich nicht mit verschiedenen Drittanbieter-Anmeldeprozessen auseinandersetzen.

  6. Bessere Anpassbarkeit: Du kannst Anmelde- und Registrierungsworkflows genau nach deinen Anforderungen anpassen und zusätzliche Sicherheitsfunktionen wie Double Opt-In oder Captcha leichter implementieren.

  7. Unabhängigkeit von Drittanbieterdiensten: Bei Verwendung von Drittanbieter-Authentifizierungsdiensten besteht das Risiko, dass diese Dienste in der Zukunft eingestellt oder geändert werden, was deine Anwendung beeinträchtigen könnte.

  8. Einfachere Fehlerbehebung: Die einfache E-Mail-Passwort-Authentifizierung erleichtert die Fehlerbehebung und das Testen.

  9. Kostenkontrolle: Die Integration von Drittanbieter-Authentifizierungsdiensten kann mit zusätzlichen Kosten verbunden sein, während die einfache E-Mail-Passwort-Authentifizierung in der Regel keine zusätzlichen Kosten verursacht.

  10. Zugang zu Benutzerdaten: Mit eigener Authentifizierung kannst du leichter auf benutzerspezifische Daten zugreifen und benutzerdefinierte Berechtigungen implementieren.

Technische Implementation von SMTP

In der Vielzahl der angebotenen und oft nicht zufriedenstellend funktionierenden Provider für E-Mail-Versand sticht besonders strapi-provider-email-smtp heraus. Dieser Drittanbieter-Provider für Strapi ermöglicht es dir, deine eigenen E-Mail-Adressen nahtlos in deine Strapi-Anwendung zu integrieren. Um dies zu tun, musst du zunächst diesen Provider installieren.

npm i strapi-provider-email-smtp

Das strapi-provider-email-smtp-Tool wird mit den erforderlichen Abhängigkeiten, nämlich Nodemailer und Lodash, geliefert und vereinfacht die Einrichtung erheblich.

// config/plugins.js
module.exports = ({ env }) => ({
  email: {
    config: {
      provider: "strapi-provider-email-smtp",
      providerOptions: {
        host: process.env.MAILHOST, //SMTP Host
        port: process.env.SMTPORT, //SMTP Port
        secure: process.env.MAILSECURITY, // If you are on localhost this should be set to false!
        username: process.env.MAILUSERNAME,
        password: process.env.MAILPASSWORD,
        rejectUnauthorized: true,
        requireTLS: true,
        connectionTimeout: 1,
      },
    },
    settings: {
      defaultFrom: process.env.DEFAULTFROM,
      defaultReplyTo: process.env.DEFAULTREPLYTO,
    },
  },
});

Mit einer Ionos Mail (selbst getestet) oder einer gmail Adresse (Vom Plugin Author getestet) kann die .env datei dann wie folgt aussehen:

// in your .env file
# Email
MAILHOST = smtp.ionos.de
SMPTPORT = 587
MAILSECURITY = false
MAILUSERNAME = 'mail@example.de'
MAILPASSWORD = "meinsupergeheimesPasswort"
DEFAULTFROM= 'mail@example.de'
DEFAULTREPLYTO ='mail@example.de'

Die Strapi Settings anpassen.

Für Deinen Double Opt-In kannst du nun einfach deine Settings in Strapi anpassen.

strapi-double-opt-in

Beachte auch, dass du in deinen Email Templates ggf. die ShipperMail anpasst und diese dem Mailusername entspricht. Neu zu registrierende Nutzer werden nun nicht mehr direkt mit confirmed=true angelegt, sondern der Nutzer enthält eine Email mit einem entsprechenden Link zur Bestätigung.

Der Reset Password Workflow und Kompletter Überblick (Fazit)

Eigentlich musst du jetzt für einen Reset Password Workflow nur noch darauf achten, dass deine E-Mail-Konfiguration im Strapi-Backend mit dem Mailbenutzernamen aus deinen .env-Variablen korrespondiert.

strapi-double-opt-in

Routen und Zusammenfassung

Das war es schon. Mit dieser Konfiguration stellt dir Strapi alle benötigten Routen zur Verfügung, um ein Double Opt-In in deinem Frontend zu implementieren. Aber keine Sorge, wir werden die einzelnen Schritte noch einmal durchgehen:

Register (Sign-in)

Diese Route ermöglicht es Benutzern, sich in deiner App zu registrieren und löst den Versand einer E-Mail mit einer Bestätigungs-URL aus.

  • POST: http://localhost:1337/api/auth/local/register

Beispiel für den Body in JSON-Format:

// body json Post
{
  "username": "username",
  "email": "usersemail@gmx.com",
  "password": "somePassword"
}

Log In

Diese Route ermöglicht es Benutzern, sich über ihre E-Mail und ihr Passwort in der App anzumelden.

  • POST: http://localhost:1337/api/auth/local/

Beispiel für den Body im JSON-Format:

// body json Post
{
  "identifier": "usersemail@gmx.com",
  "password": "E24maBlu"
}

Forgotten Password

Diese Route initiiert das Senden einer E-Mail an den Empfänger mit einem entsprechenden Reset-Code in der URL.

  • POST: http://localhost:1337/api/auth/forgot-password

Beispiel für den Body im JSON-Format:

// body json Post
{
  "email": "mariemeyer@gmail.com"
}

Reset Password

Diese Route verwendet den Reset-Code, um das Passwort zurückzusetzen.

  • POST: http://localhost:1337/api/auth/reset-password

Beispiel für den Body im JSON-Format:

// body json Post
{
  "code": "dec347bd22bb89e7f274a292f85f23f12712606654ffcf26912410ad21ec25d40816e058ecbcc8d7fe83990e0e47f1c014f247aa7efaa96fc39de432cf006d23",
  "password": "neuesPW",
  "passwordConfirmation": "neuesPW"
}

Das Double Opt-In-Verfahren ist nicht nur eine rechtlich konforme Methode zur Anmeldung von Benutzern, sondern auch eine äußerst praktische und leicht umsetzbare Lösung, insbesondere für Startups und MVPs. Mit Strapi als deinem Begleiter wird die Implementierung so einfach wie nie zuvor. Du behältst die Kontrolle über die Benutzerdaten, kannst den Datenschutz sicherstellen und profitierst von der Flexibilität, die du für deinen individuellen Anwendungsfall benötigst.

0
0 Bewertungen

Jetzt selbst bewerten