Я установил Active Admin, Devise и CanCan, а также настроил адаптер CanCan (согласно инструкциям в вики Active Active). У меня проблема в том, что когда пользователь выходит из системы, система не перенаправляет правильно на страницу входа. Кажется, он входит в бесконечный цикл перенаправления, т. Е. Safari говорит «слишком много перенаправлений» и «не удалось открыть страницу». Это происходит до тех пор, пока я не остановлю / не запустите сервер и не очистлю кеш / файлы cookie, чтобы уничтожить любые сеансы файлов cookie.
Моя система имеет два уровня администратора: «basic_admin» и «super_admin». Все действительные пользователи должны иметь доступ к бэкэнду Active Admin (нет фронтэнда - это система панели данных, управляемая данными).
routes.rb:
devise_for :users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
active_admin.rb:
config.authentication_method = :authenticate_user!
config.authorization_adapter = ActiveAdmin::CanCanAdapter
config.on_unauthorized_access = :access_denied
config.current_user_method = :current_user
config.authorization_adapter = ActiveAdmin::CanCanAdapter
config.on_unauthorized_access = :access_denied
config.cancan_ability_class = 'Ability'
config.logout_link_path = :destroy_user_session_path
config.filter_attributes = [:encrypted_password, :password, :password_confirmation]
config.localize_format = :long
ability.rb:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
# Standard permissions for all users (basic and super admins)
can :read, ActiveAdmin::Page, :name => 'Dashboard'
can :manage, ServiceUser
can :manage, SupportSession, support_worker_id: user.support_worker_id
can :create, SupportSession
can :manage, User, id: user.id # Can manage only their own account
if user.role == 'super_admin' # Extra permissions for super admins
can :manage, :all
end
end
end
Console log (rails server terminal):
Started GET "/admin/login" for ::1 at 2019-06-14 08:43:23 +0100
Processing by ActiveAdmin::Devise::SessionsController#new as HTML
Completed 401 Unauthorized in 1ms (ActiveRecord: 0.0ms)