在我的Rails应用程序网站中,访问者可以注册并创建内容。它与用户模型一起使用了devise,并且一切正常。
现在,我想使用rails_admin来管理网站资源和用户等,并且只有具有行政管理权限的人才能访问它。
我应该为管理面板访问创建单独的AdminUser模型还是使用具有admin角色的User模型,并使用一些授权库来管理访问权限。
如果我仅使用一个模型,那么如果用户是admin,我希望在登录后将用户重定向到管理面板,如果不是,则希望将用户重定向到其配置文件。哪个授权库可以或可以
在我的情况下更合适。
谢谢!
最佳答案
好问题。我在项目中使用Rails Admin和Pundit。
我更喜欢将管理员模型与用户模型分开。
原因之一是,我希望能够从Rails Admin中“成为用户”,以在他们遇到问题时为他们提供帮助。当您拥有单独的用户和管理员模型时,这样做更容易。
管理员模型可以非常简单。用它生成rails generate devise Admin
然后在你的config/initializers/rails_admin.rb
中添加
config.authenticate_with do
warden.authenticate! :scope => :admin
end
config.current_user_method(&:current_admin)
要重定向到正确的配置文件,请将此方法添加到您的ApplicationController中
def after_sign_in_path_for(resource)
if resource.class == Administrator
rails_admin_path
else
# Change profile_path to where you want regular users to go
stored_location_for(resource) || profile_path
end
end
为了防止从当前用户注销时从当前管理员注销,请在
config/initializers/devise.rb
中设置此配置config.sign_out_all_scopes = false
为了解决您的其他问题,我同时使用了CanCan和Pundit。我更喜欢Pundit,因为使用CanCan可以评估每个请求的所有权限。使用Pundit,仅在需要时才检查权限。根据我的经验,Pundit也更加灵活。
关于ruby-on-rails - Rails_admin : Should I have admin_user or user with admin role to manage users and admin panel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27102718/