Füge deiner React-App eine Benutzer-Authentifizierung hinzu

Add User Authentication To Your React App
Add User Authentication To Your React App

Bei der Entwicklung von Webanwendungen ist die Benutzerauthentifizierung eine notwendige Funktion, die Sie Ihrer Anwendung hinzufügen müssen. Die Benutzerauthentifizierung ermöglicht verifizierten Benutzern den Zugriff auf Funktionen, die ihnen in Ihrer Anwendung zur Verfügung stehen, und verweigert nicht verifizierten Benutzern den Zugriff.

Die Integration der Benutzerauthentifizierung in React-Anwendungen ist keine einfache Aufgabe und sehr zeitaufwändig, da sie mehrere komplexe Prozesse beinhaltet, wie z.B. das Hashing von Passwörtern, die Generierung und Verwaltung von Authentifizierungs-Tokens und vieles mehr.

Mit Plattformen wie Back4App ist die Integration der Benutzerauthentifizierung in Ihre React-Anwendungen jedoch einfach und leicht. In diesem Artikel erfahren Sie, wie Sie die Benutzerauthentifizierung mit Back4App zu Ihrer React-App hinzufügen.

Verstehen der Benutzerauthentifizierung

Bei der Benutzerauthentifizierung geht es darum, die Identität einer Person festzustellen, die versucht, Zugang zu Ihrer Anwendung zu erhalten.

Sie erfordert, dass die Person, die versucht, Zugang zu Ihrer Anwendung zu erhalten, überprüfbare Anmeldeinformationen vorlegt, die in Form eines Benutzernamens und eines Passworts, biometrischer Daten, Zugangsschlüsseln/Tokens usw. vorliegen können.

Wenn Ihr Authentifizierungsmechanismus die Anmeldedaten für gültig hält, gewährt er dem Benutzer Zugang zu Ihrer Anwendung, andernfalls lehnt er die Authentifizierungsanfrage mit einer entsprechenden Fehlermeldung ab.

Gängige Authentifizierungsmethoden

Zu den gängigen Authentifizierungsmethoden gehören die folgenden:

  • Benutzername und Passwort: Bei dieser Authentifizierungsmethode muss ein Benutzer einen gültigen Benutzernamen und ein Passwort angeben, um seine Identität zu bestätigen. Nachdem ein Benutzer einen Benutzernamen und ein Kennwort angegeben hat, vergleicht dieser Authentifizierungsmechanismus sie mit den in der Datenbank gespeicherten Daten und genehmigt die Authentifizierungsanfrage nur, wenn sie übereinstimmen.
  • Multi-Faktor-Authentifizierung (MFA): MFA bezieht sich auf die Kombination mehrerer Authentifizierungsmechanismen zur Authentifizierung eines Benutzers. In einem Authentifizierungssystem, das MFA verwendet, muss der Benutzer seine Identität mehr als einmal validieren. Zum Beispiel kann ein Benutzer aufgefordert werden, einen Authentifizierungscode einzugeben, nachdem er seine Identität mit einem Benutzernamen und einem Passwort bestätigt hat.
  • Biometrische Authentifizierung: Biometrische Authentifizierung bezieht sich auf Authentifizierungsmechanismen, die auf biologischen Merkmalen wie Gesicht, Irismuster, Fingerabdrücken oder Stimmerkennung beruhen, um einen Benutzer zu authentifizieren.
  • OAuth: OAuth ist ein Authentifizierungsprotokoll, das es Ihren Nutzern ermöglicht, ihre Identität zu authentifizieren, indem sie Ihrer Anwendung Zugriff auf ihren bevorzugten OAuth-Anbieter wie Facebook oder X (früher Twitter) gewähren. Wenn ein Benutzer versucht, sich mit OAuth zu authentifizieren, wird er zum Anmeldebildschirm des OAuth-Anbieters weitergeleitet, um seine Identität zu bestätigen.
  • JSON-Web-Token (JWT): JWTs sind tragbare und URI-sichere kompakte Token-Formate, die in der Regel zur sicheren Übertragung von Authentifizierungs- und Autorisierungsdaten zwischen verschiedenen Parteien verwendet werden. Bei der Authentifizierung mit JWTs sendet der Benutzer das JWT-Zugangs-Token in seinen Anfragen, um seine Identität zu bestätigen.

Hinzufügen von Benutzerauthentifizierung zu Ihrer Anwendung mit Back4app

Back4app ist eine Cloud-Plattform, die eine breite Palette von Diensten anbietet, einschließlich einer Backend-as-a-Service (BaaS) -Funktion. Die BaaS-Option von Back4app bietet verschiedene Funktionen, einschließlich Benutzerauthentifizierung.

Die Implementierung der Benutzerauthentifizierung mit Back4app erfordert einige Schritte. In diesem Tutorial werden Sie eine einfache Bankverwaltungs-App mit React erstellen.

Diese App integriert die Back4app-Authentifizierungsfunktionen, die es Ihnen ermöglichen, ein Konto zu erstellen, sich bei Ihrem Konto anzumelden, auf Ihre aktuellen Anmeldeinformationen zuzugreifen und sich abzumelden.

Erstellen einer React-Anwendung

Um eine neue React-Anwendung zu erstellen, beginnen Sie mit dem Erstellen eines Gerüsts für eine neue React-Anwendung mit Vite. Vite ist ein Build-Tool für die Webentwicklung, das eine schnellere und effizientere Entwicklung ermöglicht.

Führen Sie den folgenden Befehl in Ihrem Terminal aus, um die neue React-App zu erstellen:

npm init vite

Nachdem Sie den obigen Befehl ausgeführt haben, erscheint auf Ihrem Bildschirm eine Reihe von Eingabeaufforderungen, in denen Sie aufgefordert werden, den Namen der Anwendung, das gewünschte Framework und die zu verwendende Sprachvariante anzugeben.

Etwa so:

React-App mit Vite erstellen

In der obigen Abbildung lautet der Name der Anwendung react-authentication-app, das ausgewählte Framework ist React und die Sprachvariante ist JavaScript.

Wechseln Sie dann in das aktuelle Verzeichnis der Anwendung und installieren Sie die erforderlichen Abhängigkeiten, indem Sie die folgenden Befehle ausführen:

cd react-authentication-app && npm install

Als nächstes installieren Sie den React Router in Ihrer Anwendung, indem Sie den folgenden Befehl ausführen:

npm install react-router-dom

Als Nächstes öffnen Sie Ihre React-Anwendung in einer IDE (Integrated Development Environment) und ändern die Datei main.jsx, indem Sie den Inhalt durch den unten stehenden Codeblock ersetzen.

import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.jsx'
import './index.css'
import { BrowserRouter } from 'react-router-dom'

ReactDOM.createRoot(document.getElementById('root')).render(
  <React.StrictMode>
    <BrowserRouter>
      <App />
    </BrowserRouter>
  </React.StrictMode>,
)

Dieser Codeblock importiert die Komponente BrowserRouter aus dem Paket react-router-dom und umschließt die Komponente App.

Dies ermöglicht das Routing in der gesamten Anwendung. Definieren Sie in Ihrer App-Komponente die verschiedenen Routen in der Anwendung.

Etwa so:

import { Route, Routes } from "react-router-dom";
import Signup from "./pages/Signup";
import Login from "./pages/Login";
import Home from "./pages/Home";

function App() {

  return (
    <>
      <Routes>
        <Route path="/home" element={<Home />} />
        <Route path="" element={<Signup />}/>
        <Route path="/login" element={<Login />}/>
      </Routes>
    </>
  )
}

export default App

Der obige Codeblock definiert drei separate Routen, die es den Benutzern ermöglichen, anhand der URL-Pfade zwischen der Anmelde-, der Login- und der Homepage zu navigieren.

Erstellen Sie nun im src-Verzeichnis der Anwendung einen Ordner components. Erstellen Sie in diesem Ordner eine Datei Authnavbar.jsx. Diese Komponente wird eine Navigationsleiste enthalten, die auf den Anmelde- und Login-Seiten angezeigt wird.

Schreiben Sie den folgenden Code in die Authnavbar-Komponente:

import React from "react";
import { Link } from "react-router-dom";

function Authnavbar(props) {
  return (
    <nav>
      <h3>Banka</h3>
      {props.type === "signup" ? (
        <div>
          If you already have an account{""}
          <Link to="/login" className="link">
            Log in
          </Link>
        </div>
      ) : props.type === "login"? (
        <div>
          If you don't have an account{""}
          <Link to="/" className="link">
            Sign Up
          </Link>
        </div>
      ) : null}
    </nav>
  );
}

export default Authnavbar;

Der obige Codeblock erstellt eine Navigationsleiste mit bedingtem Rendering basierend auf dem Wert der type prop, so dass Benutzer zwischen den Anmelde- und Login-Seiten innerhalb der Anwendung navigieren können.

Erstellen Sie als nächstes einen Seitenordner im src-Verzeichnis der Anwendung. Erstellen Sie in diesem Ordner drei Komponenten: Home.jsx, Sign-up.jsx und Login.jsx. Diese Dateien werden als Home-, Anmelde- und Login-Seiten dienen.

Die Anmeldeseite enthält ein Formular, in das die Nutzer ihre Daten wie Benutzername, E-Mail und Passwort eingeben können.

Zum Beispiel:

import React from "react";
import Authnavbar from "../components/Authnavbar";

function Signup() {
  const [formData, setFormData] = React.useState({
    username: "",
    email: "",
    password: "",
  });

  const handleChange = (event) => {
    setFormData((prevState) => ({
      ...prevState,
      [event.target.name]: event.target.value,
    }));
  };

  return (
    <>
      <Authnavbar type= "sign-up"/>
      <form>
        <input
          type= "text"
          name= "username"
          placeholder= "Username..."
          onChange={handleChange}
          value={formData.username}
        />
        <input
          type= "email"
          name= "email"
          placeholder= "Email..."
          onChange={handleChange}
          value={formData.email}
        />
        <input
          type= "password"
          name= "password"
          placeholder= "Password..."
          onChange={handleChange}
          value={formData.password}
        />
        <div>
          <button>Sign Up</button>
        </div>
      </form>
    </>
  );
}

export default Sign-up;

Dieser Codeblock stellt eine Anmeldeseite dar. Er enthält ein Formular mit Eingabefeldern, einschließlich des Benutzernamens, der E-Mail-Adresse und des Passworts des Benutzers.

Es gibt auch einen formData-Status, der die Werte der Eingabefelder Benutzername, E-Mail und Passwort speichert. Die Funktion handleChange aktualisiert den formData-Status immer dann, wenn der Benutzer die Eingabefelder eingibt.

Schreiben Sie in der Komponente Login die folgenden Codezeilen:

import React from "react";
import Authnavbar from "../components/Authnavbar";

function Login() {
  const [formData, setFormData] = React.useState({
    username: "",
    password: "",
  });

  const handleChange = (event) => {
    setFormData((prevState) => ({
      ...prevState,
      [event.target.name]: event.target.value,
    }));
  };

  return (
    <>
      <Authnavbar type= "login"/>
      <form>
        <input
          type= "text"
          name= "username"
          placeholder= "Username..."
          onChange={handleChange}
          value={formData.username}
        />
        <input
          type= "password"
          name= "password"
          placeholder= "Password..."
          onChange={handleChange}
          value={formData.password}
        />
        <div>
          <button>Log In</button>
        </div>
      </form>
    </>
  );
}

export default Login;

Die Anmeldeseite ist der Anmeldeseite sehr ähnlich, außer dass es im Anmeldeformular kein E-Mail-Eingabefeld gibt und dem formData-Objektstatus die Eigenschaft E-Mail fehlt.

Ersetzen Sie den Code in der Datei index.css durch die folgenden Codezeilen:

*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body{
  color: #333333;
  background-color: #E8F7F5;
  inline-size: 50%;
  margin: auto;
  font-family: "Montserrat", sans-serif;
}

input{
  padding: 0.7rem 1rem;
  border-radius: 10px;
  border: none;
  outline: none;
  color: #333333;
  background-color: #FFFFFF;
  font-family: "Montserrat", sans-serif;
  inline-size: 100%;
}

input::placeholder{
  font-family: "Montserrat", sans-serif;
  font-weight: 500;
}

button{
  padding: 0.7rem 1rem;
  background-color: #00C3A5;
  color: #FFFFFF;
  font-family: "Montserrat", sans-serif;
  font-size: 14px;
  border-radius: 7px;
  border: none;
}

form{
  margin-block-start: 25%;
  display: flex;
  flex-direction: column;
  gap: 2rem;
  align-items: center;
}

nav{
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem 0;
}

.link{
  text-decoration: none;
  color: #00C3A5;
}

Nachdem Sie Ihre Anwendung gestaltet haben, führen Sie den folgenden Befehl aus, um Ihre Anwendung zu starten:

npm run dev

Wenn Sie den obigen Befehl ausführen, erhalten Sie den Link http://localhost:5173/. Rufen Sie diesen Link in Ihrem Webbrowser auf, um Ihre Anwendung anzuzeigen.

Mit den von Ihnen definierten Stilen sollte die Anmeldeseite wie die folgende Seite aussehen:

Banka Sign Up Page

Ihre Anmeldeseite sollte wie das folgende Bild aussehen:

Banka Log In Seite

Nachdem Sie nun Ihre React-Anwendung erstellt haben, müssen Sie eine neue Back4app-Anwendung erstellen, um Ihre Authentifizierung zu verwalten.

Erstellen einer neuen Back4App-Anwendung

Um Back4app zu nutzen, müssen Sie ein Konto haben. Sie können sich kostenlos anmelden, wenn Sie noch keines haben.

In diesem Tutorial werden Sie eine neue Back4app-Anwendung mit Hilfe des Back4app AI Agenten erstellen. Der Back4app AI Agent ist ein KI-Helfer, der Sie bei der Ausführung von Aufgaben in Back4app mit Hilfe von Prompts unterstützt.

Melden Sie sich bei Ihrem Back4app-Konto an und klicken Sie auf die Schaltfläche “AI Agent” in der Navigationsleiste Ihres Dashboards (siehe Abbildung unten).

Back4app Home Dashboard

Um mit dem Back4app AI Agent eine Anwendung zu erstellen, geben Sie die folgende Eingabeaufforderung ein:

create a new application named react-authentication

Sie sollten eine Antwort erhalten, die der im folgenden Bild gezeigten ähnelt:

Neue Back4app App mit dem AI Agent erstellen

Wie in der Abbildung oben zu sehen ist, hat der Back4app AI Agent eine Anwendung namens react-authentication erstellt. Sie finden diese Anwendung auf der “Meine App”-Webseite.

Alternativ können Sie eine neue Back4app-Anwendung über die intuitive Back4app-Benutzeroberfläche (UI) erstellen.

Erstellen Sie in der react-authentication-App auf Back4app eine Wallet-Klasse. Diese Brieftaschenklasse enthält wertvolle Informationen über die Brieftasche des Benutzers.

Sie können die Klasse mit dem AI-Agenten erstellen, indem Sie die nachstehende Aufforderung verwenden:

Create a Wallet class and add the following fields: balance, owner(relation to the User class indicating which user owns the wallet), createdAt, and updatedAt in the react-authentication app

Der KI-Agent leitet den Prozess der Erstellung der Brieftaschenklasse ein und fügt die angegebenen Daten hinzu, wie in der folgenden Abbildung dargestellt.

Wallet-Klasse mit AI-Agent erstellen

Verbinden Sie Ihre React-App mit Back4app

Nachdem Sie Ihre Back4app-Anwendung erstellt haben, müssen Sie Ihre Back4app-Anwendung mit Ihrer React-App über das Parse SDK verbinden.

Installieren Sie Parse in Ihrer Anwendung, indem Sie den folgenden Befehl ausführen:

npm install parse

Als nächstes initialisieren Sie es in Ihrer Anwendung, indem Sie das Parse-Objekt in Ihre Anwendungskomponente importieren und es mit Ihren Back4app-Anwendungsschlüsseln konfigurieren.

Etwa so:

import Parse from 'parse';

Parse.initialize('YOUR_APP_ID', 'YOUR_JAVASCRIPT_KEY');
Parse.serverURL = '<https://parseapi.back4app.com/>';

Ersetzen Sie "IHRE_APP_ID" und "IHR_JAVASCRIPT_KEY" durch die entsprechenden von Back4App bereitgestellten Schlüssel. Sie finden Ihre App-Schlüssel auf dem Bildschirm, nachdem Sie Ihre App mit dem Back4app AI Agent erstellt haben.

App Berechtigungsnachweise

Beachten Sie, dass Sie die Schlüssel in Ihrer Anwendung immer ordnungsgemäß sichern sollten, vorzugsweise mit env-Variablen.

Implementierung der Benutzerauthentifizierung mit dem Parse SDK

Nachdem Parse initialisiert wurde, können Sie nun die Benutzerauthentifizierung in Ihrer React-Anwendung implementieren.

Back4App bietet automatisch eine Benutzerklasse für die Benutzerauthentifizierung. Diese Klasse hat Standardfelder wie Benutzername, Passwort, E-Mail, etc.

Fügen Sie die folgenden Codezeilen zur Sign-up-Komponente hinzu, um die Benutzeranmeldung in Ihrer React-Anwendung zu implementieren.

import Parse from "parse"
import { useNavigate } from "react-router-dom";

const navigate = useNavigate();

const signUpUser = async () => {
  try {
    const newUser = new Parse.User();
    newUser.set("username", formData.username);
    newUser.set("email", formData.email);
    newUser.set("password", formData.password);
    const user = await newUser.signUp();

    let Wallet = Parse.Object.extend("Wallet");
    let wallet = new Wallet();

    let userPointer = {
      __type: "Pointer",
      className: "_User",
      objectId: user.id,
    };

    wallet.set("owner", userPointer);
    wallet.set("balance", 100);
    wallet.save();

    console.log(`${user} have successfully signed up`);
    navigate("/login");
  } catch (error) {
    console.log("you encountered an error signing up");
  }
};

Der obige Codeblock verwendet den useNavigate-Hook von react-router-dom, um programmatisch zu verschiedenen Routen zu navigieren. Der useNavigate-Hook gibt eine navigate-Funktion zurück, die der Variablen navigate zugewiesen ist.

Die Funktion signUpUser ist für die Anmeldung eines neuen Benutzers zuständig. Die Funktion erstellt ein neues Parse-Benutzerobjekt newUser unter Verwendung der Parse.User-Methode und setzt die Werte seiner Eigenschaften Benutzername, E-Mail und Passwort auf die Werte der entsprechenden Eigenschaften des formData-Objekts state. Anschließend ruft sie die signUp-Methode asynchron für das newUser-Objekt auf.

Nachdem der Code einen neuen Benutzer erstellt hat, definiert er mit der Methode Parse .Object.extend eine Parse-Klasse namens “Wallet”.

Dann wird ein userPointer-Objekt erstellt, das einen Zeiger auf den Benutzer mit dem Klassennamen _User und der Objekt-ID des neu angemeldeten Benutzers darstellt. Mit der set-Methode setzt der Code den Besitzer der Brieftasche auf das userPointer-Objekt und setzt den Anfangssaldo der Brieftasche auf 100.

Bei einer erfolgreichen Anmeldung protokolliert die Funktion eine Erfolgsmeldung und leitet mit der Funktion navigate zur Login-Route weiter. Tritt bei der Anmeldung ein Fehler auf, wird dieser abgefangen und eine Fehlermeldung protokolliert.

Erstellen Sie anschließend eine handleSubmit-Funktion, die die signUpUser-Funktion aufruft. Binden Sie diese Funktion mithilfe des onSubmit-Ereignishandlers an das Anmeldeformular.

Dadurch wird sichergestellt, dass die Funktion handleSubmit automatisch ausgelöst wird, wenn ein Benutzer das Anmeldeformular absendet.

Die Funktion handleSubmit sollte wie folgt aussehen:

const handleSubmit = (event) => {
  event.preventDefault();
  signUpUser();
};

Um die Benutzeranmeldung zu implementieren, erstellen Sie eine logInUser-Funktion, die die Logik für die Anmeldung eines Benutzers enthält.

Fügen Sie den unten stehenden Codeblock zu Ihrer Login-Komponente hinzu:

import Parse from "parse"
import { useNavigate } from "react-router-dom";

const navigate = useNavigate();

const logInUser = async () => {
    try {
      const user = await Parse.User.logIn(formData.username, formData.password);
      console.log("User logged in successfully:", user);
      navigate("/home");
    } catch (error) {
      console.log("Error logging in user:", error);
    }
  };

  const handleSubmit = (event) => {
    event.preventDefault();
    logInUser();
  };

Die Funktion logInUser ruft die LogIn-Methode der Klasse Parse.User asynchron auf und übergibt die Werte der Eigenschaften Benutzername und Passwort aus dem Zustand des formData-Objekts.

Die Funktion prüft, ob der vom Benutzer eingegebene Benutzername und das Passwort mit denen übereinstimmen, die in der Back4App-Benutzerklasse gespeichert sind. Wenn sie übereinstimmen, wird sich der Benutzer erfolgreich anmelden.

Binden Sie die Funktion handleSubmit über das Ereignis onSubmit an das Anmeldeformular. Die handleSubmit-Funktion ruft die logInUser-Funktion auf und versucht, den Benutzer anzumelden.

Nach der Anmeldung verwaltet das Parse SDK die Sitzung des Benutzers. Sie können auf den aktuellen Benutzer mit der Methode Parse.User.current zugreifen. Sie werden diese Methode in der Komponente Home verwenden.

Öffnen Sie die Komponente Home und schreiben Sie diesen Code:

import React from "react";
import Parse from "parse";
import { useNavigate } from "react-router-dom";

function Home() {
  const navigate = useNavigate();
  
  const [balance, setBalance] = React.useState(0);

  const user = Parse.User.current();

  const fetchBalance = async () => {
	  const Wallet = await Parse.Object.extend("Wallet");
	  const query = new Parse.Query(Wallet);
	  query.equalTo("owner", user);
	  const wallet = await query.first();
	  setBalance(wallet.get("balance"));
};

fetchBalance();

  return (
    <>
      <nav>
        <h1 className="title">Banka</h1>
        <button>Log out</button>
      </nav>
      <div className="home">
        <p className="top">Welcome {user.get("username")}</p>

        <div className="balance-card">
          <p>Total Wallet Balance</p>
          <h1>{balance}</h1>
          <button>Top Up</button>
        </div>

        <div className="features">
          <div className="card">
            <p>Pay Bills</p>
          </div>
          <div className="card">
            <p>Airtime/Data</p>
          </div>
          <div className="card">
            <p>Transfers</p>
          </div>
          <div className="card">
            <p>Withdraw</p>
          </div>
        </div>
      </div>
    </>
  );
}

export default Home;

Der obige Codeblock stellt die Startseite Ihrer Anwendung dar. Die Funktion "fetchBalance" holt den aktuellen Kontostand der Brieftasche des Benutzers ab.

Sie fragt die Klasse “Wallet” mit der Methode Parse.Query ab und legt eine Einschränkung für die Abfrage fest, um die Brieftasche abzurufen, deren Eigentümer mit der Methode query.equalTo gleich dem aktuellen Benutzer ist.

Die Methode query.first führt die Abfrage aus und gibt das erste Ergebnis zurück, das den Abfragebeschränkungen entspricht.

Mit der Funktion setBalance setzt der Code den Kontostand der Brieftasche auf den Status balance. Der Code zeigt den Namen des Benutzers und sein Guthaben in der Brieftasche an.

Im JSX-Abschnitt des Codeblocks finden Sie die Schaltfläche “Aufladen” im div-Tag mit der Klasse balance-card.

Wenn Sie auf diese Schaltfläche klicken, wird das Guthaben in der Brieftasche um 10 erhöht. Um dies zu ermöglichen, erstellen Sie eine TopUp-Funktion, die die Logik zur Erhöhung des Guthabens enthält.

Etwa so:

const topUp = async () => {
  const Wallet = await Parse.Object.extend("Wallet");
  const query = new Parse.Query(Wallet);
  query.equalTo("owner", user);
  const wallet = await query.first();
  wallet.increment("balance", 10);
  const newBalance = await wallet.save();
  setBalance(newBalance.get("balance"));
};

Dieser Code holt die Brieftasche des Benutzers aus dem Parse-Backend, erhöht den Kontostand mit der Increment-Methode um 10, speichert die aktualisierte Brieftasche zurück im Backend und aktualisiert den Kontostand. Binden Sie die topUp-Funktion mit dem Click-Event-Handler an die Schaltfläche “Aufladen”.

Als nächstes fügen Sie der Komponente Home eine Funktion logOutUser hinzu, die für das Abmelden des Benutzers verantwortlich ist. Die Funktion sollte wie folgt aussehen:

const logOutUser = async () => {
  try {
    const user = await Parse.User.logOut();
    console.log("User logged out successfully:", user);
    navigate("/");
  } catch (error) {
    console.error("Error logging out user:", error);
  }
};

Die Funktion logOutUser ruft asynchron die Methode logOut der Klasse Parse.User auf, um den aktuellen Benutzer abzumelden. Binden Sie die Funktion logOutUser über das Click-Ereignis an die Schaltfläche “Abmelden” in der Komponente Home.

Um die Komponente Home zu gestalten, fügen Sie die unten definierten CSS-Klassen in die Datei index.css ein.

.home{
  display: flex;
  flex-direction: column;
  gap: 3rem;
  margin-block-start: 4rem;
}

.title{
  text-align: center;
  margin-block-start: 2rem;
}

.top{
  font-size: 25px;
  font-weight: 500;
}

.balance-card{
  background-color: #FFFFFF;
  inline-size: 40%;
  padding: 1rem 2rem;
  border-radius: 7px;
  display: flex;
  flex-direction: column;
  gap: 2rem;
}

.features{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 2rem;
}

.card{
  background-color: #FFFFFF;
  color: #00C3A5;
  margin-block-end: 1rem;
  padding: 1rem 2rem;
  font-size: 25px;
  border-radius: 10px;
}

.card:hover{
  opacity: 0.6;
}

Testen Ihrer Anwendung

Sobald Sie die React-Anwendung erstellt und die Benutzerauthentifizierung mit Back4app implementiert haben.

Der nächste Schritt besteht darin, die Anwendung zu testen. Rufen Sie dazu in Ihrem Webbrowser den Link http://localhost:5173/ auf, und die Anmeldeseite wird auf Ihrem Bildschirm angezeigt.

Füllen Sie das Anmeldeformular aus und schicken Sie es ab.

Anmeldung bei Banka

Nach der Anmeldung können Sie überprüfen, ob die Anmeldung erfolgreich war, indem Sie das Dashboard Ihrer Anwendung auf Back4app besuchen. Wenn die Anmeldung erfolgreich war, fügt Back4app die Benutzerdetails zur Klasse “Benutzer” in Ihrer Anwendung hinzu.

Etwa so:

Nach der Anmeldung leitet die Anwendung Sie auf die Anmeldeseite weiter, wo Sie sich mit dem Benutzernamen und dem Passwort anmelden, die Sie bei der Anmeldung verwendet haben.

Zum Beispiel:

Anmeldung bei Banka

Sobald Sie eingeloggt sind, wird die Startseite auf Ihrem Bildschirm angezeigt, die wie folgt aussehen sollte:

Banka Dashboard

Klicken Sie nun auf die Schaltfläche “Aufladen”, um Ihr Guthaben um 10 zu erhöhen.

Banka aufladen

Bereitstellen Ihrer React-Anwendung auf Back4app

Um Ihre React-Anwendung auf Back4app bereitzustellen, verwenden Sie die Container as a Service (CaaS)-Anwendung von Back4app.

Mit Back4apps CaaS können Sie Docker-Container in der von Back4App bereitgestellten Cloud-Umgebung einsetzen und verwalten.

Bevor Sie Ihre React-Anwendung bereitstellen können, müssen Sie die Anwendung zunächst dockern. Dazu erstellen Sie ein Dockerfile im Stammverzeichnis Ihrer Anwendung und fügen die folgenden Codezeilen hinzu:

FROM node:16
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 5173
CMD ["npm", "run", "dev"]

Dieses Dockerfile richtet eine Node.js-Umgebung ein, erstellt ein Arbeitsverzeichnis, installiert Abhängigkeiten, kopiert den Anwendungscode, gibt einen Port an und legt den Standardbefehl zur Ausführung der Anwendung fest.

Erstellen Sie außerdem eine .dockerignore-Datei. Fügen Sie der .dockerignore-Datei die Dateien und Verzeichnisse hinzu, die bei der Erstellung von Docker-Images aus dem Kontext ausgeschlossen werden.

Zum Beispiel:

#.dockerignore
node_modules

Da Sie die React-Anwendung mit Vite erstellt haben, müssen Sie die Vite-Konfigurationsdatei aktualisieren, um Docker zu unterstützen. Ersetzen Sie in Ihrer Datei vite.config.js den vorhandenen Code durch den unten stehenden Codeblock:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

// <https://vitejs.dev/config/>
export default defineConfig({
  plugins: [react()],
  server: {
    host: true,
    strictPort: true,
    port: 5173,
   },
})

Dieser Codeblock stellt den Server so ein, dass er den Standard-Host verwendet, normalerweise localhost. Er setzt die Portnummer, die der Entwicklungsserver überwacht, auf Port 5173 und stellt sicher, dass Vite den Server nicht startet, wenn der angegebene Port nicht verfügbar ist.

Sie können nun das Docker-Image Ihrer Anwendung erstellen, indem Sie den folgenden Befehl in Ihrem Terminal ausführen:

docker build -t quote-generator .

Stellen Sie sicher, dass Sie Ihre Anwendung auf Ihr GitHub-Konto pushen, bevor Sie versuchen, die Anwendung auf Back4app bereitzustellen. Sobald Sie die Anwendung gepusht haben, integrieren Sie Ihr GitHub-Konto mit Back4app.

Sie können dies mit der Back4app Github App tun. Nachdem Sie Ihr GitHub mit Back4app integriert haben, können Sie nun Ihre Anwendung mit dem Back4app AI Agent bereitstellen.

Geben Sie die nachstehende Eingabeaufforderung ein, um die Anwendung bereitzustellen:

Deploy my repository <<repository-url>> on Back4app containers

Ersetzen Sie im obigen Codeblock die repository-url durch die URL des GitHub-Repositorys Ihrer Anwendung.

Anwendung auf Back4app Containern bereitstellen

Wie in der Abbildung oben dargestellt, geben Sie bei der Kommunikation mit dem KI-Agenten den Link zum GitHub-Repository der Anwendung an, die Sie bereitstellen möchten.

Nachdem der KI-Agent von Back4app die Bereitstellung der Anwendung initiiert hat, warten Sie ein paar Minuten und bestätigen dann den aktuellen Status der Bereitstellung.

Zum Beispiel:

App Live URL

Nach erfolgreicher Bereitstellung aktualisiert der Back4app AI Agent den Bereitstellungsstatus der Anwendung auf “bereitgestellt” und stellt Ihnen einen Link zur Verfügung, über den Sie die Anwendung in Ihrem Browser aufrufen können.

Sie finden die fertige App auf diesem GitHub-Repository und die Live-App unter dieser URL.

Schlussfolgerung

In diesem Artikel wurde erklärt, wie man eine Authentifizierung zu einer React-App mit einem Backend als Dienst hinzufügt.

Die Integration der Benutzerauthentifizierung in Ihre React-App mit Back4App ist ein unkomplizierter Prozess, der die Sicherheit und Funktionalität Ihrer Anwendung erheblich verbessert.

Durch die Nutzung der Back4App-Services können Sie sich auf die Entwicklung Ihrer Webanwendungen mit großartigen Benutzererfahrungen konzentrieren, während Sie das Backend-Management und die Authentifizierungsaufgaben einer zuverlässigen Plattform überlassen.


Leave a reply

Your email address will not be published.