Eingeschränkter Webzugriff (Datensätze) mit Ruby on Rails

Inhaltsverzeichnis

In Webanwendungen, in denen wir über private Zonen verfügen, auf die nur registrierte Mitglieder zugreifen sollen, müssen wir Mechanismen implementieren, die es Benutzern ermöglichen, sie nur zu sehen, wenn sie sich authentifiziert haben.
Das Filter Sie sind Werkzeuge von Schienen die es uns ermöglichen, Aufrufe von Methoden und Aktionen abzufangen, sodass wir unsere Methoden entweder vorher, während oder nachher hinzufügen können, damit wir den Fluss der Anwendung nach Belieben steuern können, um unsere Funktionalitäten zu erfüllen. In dieser Phase verwenden wir die vor Filter um die Aufrufe unserer Aktionen abzufangen, auf diese Weise können wir die Sitzung überprüfen und wissen, ob der Benutzer eingeloggt ist, wenn nicht, leiten wir ihn an einen von uns vereinbarten Ort um. Wir werden diese Methode in unserem Application Controller platzieren, da sie die Basis ist und auf diese Weise für die gesamte Anwendung verfügbar ist.
Sehen wir uns den Code an, den wir dafür haben:
 def autorisieren außer session [: user_id] flash [: notice] = "Bitte einloggen" redirect_to (: controller => "login",: action => "login") end end 

Da wir sehen, dass die Logik dahinter recht einfach ist, verwenden wir Rubys eigene Bedingung, die die es sei denn, ermöglicht uns dies die Bedingung, dass der Code des Blocks ausgeführt wird, wenn die Bedingung nicht erfüllt ist. Wenn wir also keine ID eines Benutzers in der Sitzung haben, werden wir ihn umleiten und ihn bitten, sich in der Anwendung zu authentifizieren.
Jetzt werden wir in unserem Administrator-Controller filtern und die Benutzer bitten, sich zu authentifizieren:
 class AdminController <ApplicationController before_filter: authorize 

Und in unserem Login-Controller machen wir auch etwas Ähnliches, nur fügen wir die Ausnahme der Login-Aktion hinzu, an der wir interessiert sind und die von jedem nicht authentifizierten Benutzer gesehen werden kann:
 Klasse LoginController: login 

Wenn wir nicht eingeloggt sind, sollten wir beim Zugriff auf die Verwaltungsseite der Anwendung Folgendes sehen:

Jetzt haben wir die Möglichkeit, anzuwenden und zu filtern, dass Benutzer die Verwaltungsbereiche nicht sehen können, wenn sie nicht angemeldet sind. Wir haben jedoch eine letzte Inkonsistenz nicht tun, besteht die Möglichkeit, dass ein Benutzer alle Benutzer löscht und wir ohne Zugriff bleiben, es sei denn, wir ändern die Datenbank direkt und dies ist für unsere Anwendung nicht akzeptabel. Dafür werden wir wieder ein besonderes Event ins Leben rufen, in diesem Fall wird es der vor_zerstören, was macht das, bevor die Aktion ausgeführt wird? zerstören eine Methode ausführen.
Sehen wir uns den Code an:
 before_destroy: dont_destroy_dave def dont_destroy_dave raise "Kann Dave nicht zerstören" if self.name == 'dave' end 

Dann erfassen wir in unserer Löschaktion die Nachricht und zeigen sie an. Sehen wir uns den Aktionscode an:
 def delete_user id = params [: id] if id && user = User.find (id) begin user.destroy flash [: notice] = "Benutzer # {user.name} gelöscht" rescue flash [: notice] = "Can ' t lösche diesen Benutzer "end end redirect_to (: action =>: list_users) end 

Damit beenden wir unser Tutorial zur Einschränkung des Zugriffs auf unsere Anwendung. Es ist wichtig, alle Möglichkeiten abzudecken, um zu verhindern, dass unbefugte Benutzer unseren administrativen Teil sehen oder ändern, um zukünftige Kopfschmerzen und Sicherheitsprobleme zu vermeiden, die unsere Anwendung unsicher und instabil machen.Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave