Вопрос

У меня есть модель пользователя, доступа которого контролируется 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.

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

Это было полезно?

Решение

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

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

Для пользователей Concroller вы должны перезаписать ваш Access_Control, если вы хотите оставить его как в контроллере приложений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top