gpt4 book ai didi

ruby-on-rails - Rails_admin : Should I have admin_user or user with admin role to manage users and admin panel

转载 作者:行者123 更新时间:2023-12-04 15:11:00 25 4
gpt4 key购买 nike

在我的 rails 应用程序网站中,访问者可以注册并创建内容。它使用带有用户模型的设计并且一切正常。

现在我想使用 rails_admin 来管理网站资源和用户等,只有具有管理权限的人才能访问它。

我应该为管理面板访问创建一个单独的 AdminUser 模型还是使用具有管理员角色的 User 模型,并使用一些授权库来管理访问。

如果我只使用一个模型,那么我希望用户在登录后被重定向到管理面板,如果用户是管理员,如果不是,那么我希望用户被重定向到他们的个人资料。以及哪个授权库 cancan 或 pundit 将是
更适合我的情况。

谢谢!

最佳答案

好问题。我在我的项目中使用 Rails Admin 和 Pundit。

我更喜欢将 Admin 模型与 User 模型分开。

一个原因是我喜欢能够从 Rails 管理员“成为用户”,以便在他们遇到问题时能够帮助他们。当您拥有单独的 User 和 Admin 模型时,它更容易做到。

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com