當我嘗試導航到/管理員。如果沒有用戶登錄並且有非管理員用戶登錄,Cancancan會引發一個錯誤處理。我希望將其重定向到登錄屏幕 - 如果登錄成功,請繼續到rails_admin儀表板。Rails_admin,cancancan授權,設計認證。登錄重定向?
見下文,我現在的代碼/配置,請讓我知道如果你需要更多的信息:
/app/models/ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user && user.admin?
can :access, :rails_admin # only allow admin users to access Rails Admin
can :dashboard
can :manage, :all
else
can :read, :all # allow everyone to read everything
end
end
end
/config/initializers/rails_admin.rb
RailsAdmin.config do |config|
### Popular gems integration
# == Devise ==
# config.authenticate_with do
# warden.authenticate! scope: :user
# end
# config.current_user_method(&:current_user)
# == Cancan ==
config.authorize_with :cancan
## == Pundit ==
# config.authorize_with :pundit
## == PaperTrail ==
# config.audit_with :paper_trail, 'User', 'PaperTrail::Version' # PaperTrail >= 3.0.0
### More at https://github.com/sferik/rails_admin/wiki/Base-configuration
config.actions do
dashboard # mandatory
index # mandatory
new
export
bulk_delete
show
edit
delete
show_in_app
## With an audit adapter, you can add:
# history_index
# history_show
end
config.model 'User' do
create do
field :name
field :email
field :password
field :password_confirmation
field :role
end
edit do
field :name
field :email
field :password
field :password_confirmation
field :role
end
end
end
/config/routes.rb
Rails.application.routes.draw do
mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
# authenticate :admin do
# mount RailsAdmin::Engine => '/admin', as: :rails_admin
# end
root to: 'visitors#index'
devise_for :users
resources :users
devise_scope :user do
get "signup", to: "devise/registrations#new"
get "login", to: "devise/sessions#new"
get "logout", to: "devise/sessions#destroy", as: 'logout'
end
end
它的**不是**在'/ admin'上的'rails-5-api' for'rails_admin' –