acl9 und devise scheinen nicht gut zu arbeiten zusammen
-
26-09-2019 - |
Frage
Ich habe ein Benutzer-Modell, dessen Zugang kontrolliert durch ACL9.
in UsersController
:
#ACL9 related stuff
before_filter :load_user, :only => [:show]
access_control do
allow :owner, :of => :user, :to => [:show]
end
def load_user
user = User.find(params[:id])
end
in ApplicationController
:
rescue_from 'Acl9::AccessDenied', :with => :access_denied
def access_denied
authenticate_user! # a method from Devise
end
Es ist kein Problem in URL für Anmeldeseite http://localhost:3000/users/sign_in
zu geben, aber es ist ein Problem, wenn ich zum Beispiel zuerst in der Benutzerseite eingeben, was soll mich erwarten Anmeldeseite umgeleitet werden automatisch durch die Logik oben .
http://localhost:3000/users/1
=> unendliche Umleitung Hölle. Es wird versucht zu users/1
Umleitung wieder statt auf users/sign_in
lenken.
Hat jemand eine Meinung haben, was könnte schief gehen werden?
Lösung
Ich glaube, Sie sollten nicht Acl9 in Devise Benutzer-Controller verwenden. Da Sie nicht authentifiziert sind, haben Sie keine Rechte, und Sie werden authentifizieren nicht: D. Möglicherweise möchten Benutzer verbieten, zu löschen, so dass es sein sollte:
access_control :only => [:destroy] do
allow :admin
end
Für Userscontroller sollten Sie Ihre access_control überschreiben, wenn Sie es verlassen wollen, wie in Anwendungssteuerung ist.