acl9 и devise не очень хорошо работают вместе - PullRequest
0 голосов
/ 13 июня 2010

У меня есть пользовательская модель, доступ к которой контролируется ACL9.

в 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

в ApplicationController:

rescue_from 'Acl9::AccessDenied', :with => :access_denied

def access_denied
  authenticate_user! # a method from Devise
end

ЭтоНет проблем набрать URL для входа на странице http://localhost:3000/users/sign_in, но это проблема, когда, например, я сначала набираю страницу пользователя, и я ожидаю, что меня перенаправят для автоматического входа на страницу через приведенную выше логику.

http://localhost:3000/users/1 => бесконечный ад перенаправления.Он пытается перенаправить обратно на users/1 снова вместо того, чтобы указывать на users/sign_in.

У кого-нибудь есть мнение относительно того, что может быть не так?

1 Ответ

0 голосов
/ 14 июля 2010

Я думаю, что вы не должны использовать Acl9 в пользовательском контроллере Devise.Поскольку вы не аутентифицированы, у вас нет прав, и вы не будете аутентифицироваться: D.Вы можете запретить пользователям удалять, поэтому оно должно выглядеть следующим образом:

access_control :only => [:destroy] do
      allow :admin
end

Для UsersController вам следует перезаписать свой access_control, если вы хотите оставить его как есть в контроллере приложения.

...