In den meisten Anwendungen ist eine Zugriffskontrolle erforderlich, die von der Rolle des Benutzers abhängt. In dieser Lektion werden wir uns ein Beispiel für die Einrichtung einer solchen Kontrolle für eine Webanwendung ansehen. Im Rahmen dieser Aufgabe müssen Sie:
- Benutzerrolle definieren
- Je nach Rolle die Anzeige von Navigationsmenüpunkten steuern
- die Navigation zu Seiten, die für eine bestimmte Rolle nicht zugänglich sind, unmöglich zu machen
Erste Vorbereitungen
Beginnen wir mit dem vorbereitenden Teil. Um die weitere Konfiguration zu erleichtern, ist es notwendig, eine globale Variable zu erstellen, die Informationen über den aktuellen Benutzer speichert. So müssen Sie nicht jedes Mal das Backend kontaktieren und Informationen über den Benutzer abfragen, wenn Sie eine Überprüfung durchführen müssen. Es reicht aus, die erforderlichen Daten aus der globalen Variable zu lesen.
Es ist notwendig, die verschiedenen Optionen zu berücksichtigen, mit denen ein autorisierter Benutzer in die Anwendung gelangen kann:
- Login als Ergebnis einer erfolgreichen Autorisierung auf der Seite Login.
- Anmeldung als Ergebnis einer Registrierung.
- Direkte Anmeldung über einen Link zu einer bestimmten Seite für Benutzer, die bereits autorisiert sind.
In jedem dieser Fälle wird eine Backend-Abfrage verwendet, die Informationen über den Benutzer zurückgibt. In dem entsprechenden Geschäftsprozess müssen Sie lediglich einen Set Variable Block hinzufügen, um die globale Variable User_gv die Sie zuvor erstellt haben.
Dieser Block wird in den CheckAuth Geschäftsprozess für autorisierte Benutzer hinzugefügt, der sich im Ordner Prebuilt Ordner im Abschnitt Geschäftsprozesse befindet.
Um über die Anmelde- oder Registrierungsseiten einzutreten, wird der Block zu den Geschäftsprozessen der entsprechenden Schaltflächen hinzugefügt.
Lassen Sie uns das Ergebnis auf der Startseite der Anwendung überprüfen. Dazu fügen wir eine Label ein, das den Benutzer mit seinem Namen begrüßt und je nach Rolle angibt, ob er ein Administrator ist oder nicht.
Sie müssen einen Geschäftsprozess einrichten, der ausgelöst wird, wenn ein Label angezeigt wird (Label onShow Auslöser).
- Expand User. Für Informationen über den Namen und die Rollen des Benutzers.
- In Array. Um zu prüfen, ob der angegebene Benutzer in der Admins Gruppe ist.
- If-Else. Für die Variabilität der Aktionen in Abhängigkeit von den Ergebnissen der Prüfung.
- Set Variable (String). Um eine Variable String mit einem Wert von "NOT ", wenn der Benutzer nicht Mitglied der Gruppe ist Admins Gruppe ist oder einen leeren Wert, wenn er Mitglied ist.
- Concat Strings (Multiple). So erstellen Sie eine vollständige Phrase wie "Hi, Ken. You are NOT Admin".
- Label Update Properties. Für die endgültige Anzeige dieser Phrase auf der Seite.
Wenn alles richtig gemacht wird, wird der Bildschirm bei jeder Variante des Zugangs zur Seite ein ähnliches Ergebnis haben.
Kontrolle der Sichtbarkeit von Menüpunkten
Nun ist es an der Zeit, zum Hauptteil überzugehen. Wir erstellen eine Seite, die nur für Admins bestimmt ist, und fügen den entsprechenden Menüpunkt (Admin Page), um sie aufzurufen. Die beste Lösung ist, die Sichtbarkeit der Seite standardmäßig zu deaktivieren.
Mit Hilfe des Navigate Blocks müssen Sie die erstellte Seite im Page auswählen und die ID dieser Seite herausfinden.
In diesem Beispiel gibt es nur eine Seite mit eingeschränktem Zugang, aber es ist besser, gleich die Option vorzusehen, wenn es viele solcher Seiten geben kann, und eine globale schreibgeschützte Variable zu erstellen, um die Liste der Seiten zu speichern.
Als nächstes müssen Sie den Geschäftsprozess selbst erstellen (nennen wir ihn Set NavItem Visibility), um die Sichtbarkeit der Navigationsmenüpunkte zu steuern.
- Expand User. Für Informationen über Benutzerrollen.
- In Array. Um zu prüfen, ob der angegebene Benutzer in der Admins Gruppe ist.
- For each loop. So führen Sie die Schleife für alle in der globalen Variable angegebenen Seiten aus.
- NavItem Update Properties. Um die Sichtbarkeit eines Elements zu steuern, je nachdem, ob der Benutzer ein Administrator ist.
Der Block des erstellten Geschäftsprozesses muss hinzugefügt werden, bevor die Startseite in den Geschäftsprozessen der Schaltflächen für die Anmeldung und die Benutzerregistrierung aufgerufen wird (vorher, Set Variable Blöcke hinzugefügt werden, um eine Variable mit Informationen über den aktuellen Benutzer zu speichern).
Zugangskontrolle über einen direkten Link
Als Letztes muss ein Geschäftsprozess eingerichtet werden, der jedes Mal ausgeführt wird, wenn die Anwendung durch den "On app launchAuslöser" gestartet wird. Wie im vorherigen Schritt fügen Sie den Set NavItems Visibility Block für authentifizierte Benutzer hinzu.
Darüber hinaus ist es notwendig, den Zugriff auf eine geschlossene Seite über einen direkten Link zu verhindern:
- In Array (Admin_pages). Prüfen, ob die Zielseite in der Liste der Seiten für Administratoren enthalten ist.
- If-Else. Für die Variabilität der Aktionen in Abhängigkeit von den Ergebnissen der Prüfung. Wenn Falseist, können Sie zur angegebenen Seite navigieren. Im Falle von Trueist eine zusätzliche Prüfung auf das Recht zum Zugriff auf diese Seite erforderlich.
- Expand User. So lesen Sie Benutzerinformationen aus der globalen Variablen User_gv.
- In Array. Überprüfung der Mitgliedschaft in der Gruppe Admins.
- If-Else. Auswählen von Aktionen in Abhängigkeit vom Vorhandensein oder Fehlen von Administratorrechten .
- Navigate. Um die gewünschte Seite aufzurufen oder auf die Startseite umzuleiten, falls ein Benutzer ohne entsprechende Rechte versucht, eine Seite zu öffnen, die nur für Administratoren bestimmt ist.
Die ausgewählten Seiten sind nun vor unberechtigtem Zugriff geschützt. Bei fehlenden Rechten werden sie nicht im Menü angezeigt und können auch nicht über einen direkten Link aufgerufen werden.
Es ist wichtig, daran zu denken, dass der Zugriffsschutz für bestimmte Seiten nicht automatisch einen Schutz für Endpunkte bedeutet, die auf diesen Seiten verwendet werden können. Um dies zu erreichen, müssen Sie, falls erforderlich, in den Middleware Token Auth Einstellungen Benutzergruppen angeben, die Zugriffsrechte auf den ausgewählten Endpunkt haben.