ACL9 и разработчик, похоже, не работает хорошо вместе
-
26-09-2019 - |
Вопрос
У меня есть модель пользователя, доступа которого контролируется 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, если вы хотите оставить его как в контроллере приложений.