Inhaltsverzeichnis
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:
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