Ruby on Rails: before_filter =: only_when_user_is_logged_in

8

Ich möchte mit Ruby on Rails eine Aktion filtern, aber nur, wenn Benutzer angemeldet sind.

Wie ist das möglich?

    
thenengah 13.12.2009, 05:37
quelle

6 Antworten

16

Ich denke, Sie fragen, wie man einen vor-Filter nur dann ausführt, wenn ein Benutzer angemeldet ist. Es gibt keine integrierte Semantik dafür, aber es ist einfach genug, inline zu schreiben:

%Vor%     
Michael Bleigh 13.12.2009, 20:25
quelle
18
%Vor%

Oder für mehrere

%Vor%

Auf der anderen Seite können Sie auch eine :except => :this_action -Option

angeben     
nowk 13.12.2009 06:36
quelle
11

Vor den Filtern wird ein optionaler Block genommen, der an die aktuelle Controller-Instanz übergeben wird also könntest du so etwas tun:

%Vor%     
pmh 14.12.2009 09:19
quelle
2

Wenn Sie wirklich nicht möchten, dass before_filter für andere als angemeldete Benutzer ausgeführt wird, sollten Sie #skip_before_filter in Ihrem Authentifizierungsfilter. Wenn Sie zum Beispiel überprüfen, ob Benutzer in Ihrem Authentifizierungsfilter angemeldet sind, rufen Sie bei fehlgeschlagener Authentifizierung einfach skip_before_filter :filter_for_logged_in_users_only .

auf

Darüber hinaus können Sie einfach testen, ob der Benutzer angemeldet ist, bevor Sie den Filter "Nur für Mitglieder" ausführen. Zum Beispiel:

%Vor%     
andykram 13.12.2009 20:23
quelle
1

Wenn Sie eine beruhigende Authentifizierung verwenden, ist dies nur before_filter :login_required . Wenn Sie Ihr eigenes Authentifizierungs-Framework verwenden, können Sie in application.rb eine Methode erstellen, die true zurückgibt, wenn der Benutzer angemeldet ist, oder andernfalls auf die Anmeldeseite umleitet.

    
Brian Deterling 13.12.2009 06:29
quelle
0
%Vor%     
Allwin 20.06.2013 06:08
quelle

Tags und Links