我使用 Rails Admin 和 Devise 来管理和用户模型。我已向用户模型添加了一列“admin”以指示其身份。
In the config/routes.rb
,我安装/admin
for RailsAdmin:Engine
我只想允许current_user.admin
用户访问/admin
,否则,将用户重定向到主页。
我怎样才能用最干净的代码实现这个?
在您的管理控制器上:
class MyAdminController < ApplicationController
before_filter :authenticate_user!
before_filter :require_admin
end
在您的应用程序控制器上:
class ApplicationController < ActionController::Base
def require_admin
unless current_user && current_user.role == 'admin'
flash[:error] = "You are not an admin"
redirect_to root_path
end
end
end
抱歉,没有注意到它是与 Rails admin 一起使用的,您可以执行以下操作:
# in config/initializer/rails_admin.rb
RailsAdmin.config do |config|
config.authorize_with do |controller|
unless current_user.try(:admin?)
flash[:error] = "You are not an admin"
redirect_to main_app.root_path
end
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)