declarative_authorization und authlogic Probleme
-
20-09-2019 - |
Frage
(Disclaimer: Ich bin sehr neu auf Schienen)
Dieses Plugin sieht aus wie es wird ein großer fit für meine app, aber ich bin eine harte Zeit, es zu arbeiten bekommen. Ich benutze es mit authlogic, I bin ich nicht sicher, ob das das Problem ist, aber es scheint, wie es sein kann.
Wenn ich versuche, eine Zugriffs eine Seite, dass meine Admin-Rolle Zugriff auf I haben sollte erhalten diese:
Processing CompaniesController#show (for 127.0.0.1 at 2010-02-12
23:26:44) [GET]
Parameters: {"action"=>"show", "id"=>"1", "controller"=>"companies",
"battalion_id"=>"1"}
User Load (0.000681) SELECT * FROM "users" WHERE ("users"."id" =
'147') LIMIT 1
User Update (0.000622) UPDATE "users" SET "perishable_token" =
'tUyTl1eZDQSJwp_PFw7c', "last_request_at" = '2010-02-13 05:26:44',
"updated_at" = '2010-02-13 05:26:44' WHERE "id" = 147
Role Load (0.000334) SELECT * FROM "roles" WHERE ("roles".user_id
= 147)
Permission denied: No matching rules found for show for #<User id:
147, user_type: nil, login: "lauren_roth", name: "Lauren
Rothlisberger", email: "laurenrothlisber...@gmail.com",
crypted_password:
"d835a2cdf15ef449d0980e706fd86d7a9a7a0a23d0d79d6f18f...",
password_salt: "_Qz_z8eZOhKHcsPsBsoP", created_at: "2010-02-12
16:37:53", updated_at: "2010-02-13 05:26:44", old_remember_token: nil,
old_remember_token_expires_at: nil, old_activation_code: nil,
activated_at: nil, old_password_reset_code: nil, enabled: true,
identity_url: nil, invitation_id: nil, invitation_limit: nil,
position: "Admin", battalion_id: nil, company_id: nil, soldier_id:
nil, login_count: 68, failed_login_count: 0, last_request_at:
"2010-02-13 05:26:44", current_login_at: "2010-02-13 05:20:59",
last_login_at: "2010-02-13 05:19:57", current_login_ip: "127.0.0.1",
last_login_ip: "127.0.0.1", persistence_token:
"28fc9b60853045cd4e43a001b4258940a7e8f9ac50b08df6a6d...",
single_access_token: "bKgYvuRtLqauufljZDoV", perishable_token:
"tUyTl1eZDQSJwp_PFw7c", active: true, platoon_id: nil> (roles
[:Admin], privileges [:show], context :companies).
Filter chain halted as [:filter_access_filter] rendered_or_redirected.
Completed in 27ms (View: 1, DB: 0 3 queries) | 403 Forbidden [http://
localhost/battalions/1/companies/1]
Ich habe dies in meinem User-Modell def role_symbols (Rollen || []) Karte {| r. | r.name.to_sym} Ende
Aber es scheint nicht, dass Aufruf zu werden. I denken das kann das sein Kern des Problems, aber ich frage mich auch, ob es etwas zu tun hat, mit den user_sessions?
Auch das ist, was mein application_controller aussieht:
helper_method :current_user_session, :current_user
filter_parameter_logging :password, :password_confirmation
before_filter :set_current_user
protected
def set_current_user
Authorization.current_user = current_user
end
def current_user_session
return @current_user_session if defined? (@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
def store_location
session[:return_to] = request.request_uri
end
def redirect_back_or_default(default)
redirect_to(session[:return_to] || default)
session[:return_to] = nil
end
Here is my authorization_rules.rb
Ich habe den Admin nutzen, das zu reflektieren:
authorization do
role :guest do
has_permission_on :user_sessions, :to => [:create, :update]
end
role :Admin do
has_permission_on :companies, :to => [:index, :show]
end
end
Wenn Sie irgendwelche Ideen haben würde ich es sehr schätzen. Vielen Dank.
Lösung
Anscheinend ist die Anwendung lädt die Regeln der Tabelle Rollen richtig, aber nicht belastet die config / authorization_rules.rb Datei korrekt. Bitte überprüfen Sie die Datei, seinen Namen und die Syntax verwendet wird.
Versuchen Sie, die Berechtigungen verwenden in authorization_rules.rb ; wie folgt aus:
privileges do
privilege :manage, :includes => [:create, :read, :update, :delete]
privilege :read, :includes => [:index, :show]
privilege :create, :includes => :new
privilege :update, :includes => :edit
privilege :delete, :includes => :destroy
end
Und was ist mit den Firmen-Controller?
Viel Glück.
Andere Tipps
habe ich das Admin nutzen zu reflektieren, dass
Was meinst du damit? Die Admin-Rolle sollte in der authorization_rules.rb
Datei aktiviert sein, da die role_symbols
Methode scheint zu funktionieren und ist [:Admin]
als ein Array von Benutzerrollen zurück. Sie können, dass im Protokoll finden Sie unter:
(roles [:Admin], privileges [:show], context :companies)
Das bedeutet, dass der aktuelle Benutzer die Rollen festgelegt hat, muss aber mindestens eine der aufgeführten Berechtigungen für den Zugriff der Kontext / Ressource. So Ihre authorization_rules.rb
hat eine aktivierte Rolle :Admin
haben.