5

Ich habe fast die gleichen Probleme wie Victor Martin (Sie können die Fragen sehen hier gefragt).Deklarative Autorisierung und das if_attribute funktioniert nicht

Ich habe eine deklarative Autorisierung, die für fast alles funktioniert, was keine Conditionals erfordert. Z.B.

has_permission_on :users, :to => [:edit, :update, :destroy] do 
if_attribute :user => is { current_user } 
end 

Gibt es häufige Fallstricke mit der Deklarativen Autorisierung? Ich benutze authlogic und ich bin verdächtig die 'current_user' Methode im Application Controller könnte die Ursache des Problems sein.

+0

ich für authorizaiton mit Cancan gelandet - ich empfehle es – digitalWestie

Antwort

4

Beachten Sie, dass Sie, wenn Sie "filter_access_to" in Ihren Controllern verwenden, sicherstellen müssen, dass Sie ": attribute_check => true" haben. Ohne es machen die bedingten "if_attribute" -Deklarationen nichts.

Mehr Informationen zu diesem in the Declarative Authorization docs

1

Sie müssen dies Ihrem Application hinzufügen, wenn Sie nicht bereits haben:

has_permission_on :users, :to => [:edit, :update, :destroy] do 
    if_attribute :user => is { user } 
end 

Soweit ich declarative_authorization nicht weiß:

before_filter :set_current_user 
protected 
def set_current_user 
    Authorization.current_user = current_user 
end 

Dann wie dies Ihre Regeln aussehen würde rufen Sie keine Methoden auf dem Crontroller und weiß nicht, was current_user in Ihrem Beispiel bedeutet, aber es gibt Ihnen eine Instanz von Authorization.current_user namens user, die Sie in Ihrer authorization_rules.rb Datei verwenden können.

+0

OK, habe ich versucht, ‚User‘ anstelle von ‚current_user‘. Jetzt habe ich getan, dass ich ziemlich viel von dem oben genannten habe, aber es funktioniert immer noch nicht. :/ – digitalWestie

+0

Erhalten Sie Fehler oder nur "Erlaubnis verweigert"? Was sagt dein Log? –