Sta*_*ars 6 ruby-on-rails devise cancan rails-admin pundit
在我的rails应用程序网站中,访问者可以注册并创建内容.它使用设计用户模型,一切运作良好.
现在我想使用rails_admin来管理网站资源和用户等,只有拥有管理上限的人才能访问它.
我应该为管理面板访问创建单独的AdminUser模型,还是使用admin角色的用户模型,并使用一些授权库来管理访问.
如果我只使用一个模型,那么我希望用户在登录后重定向到管理面板,如果用户是管理员,如果不是,那么我希望用户被重定向到他们的个人资料.哪个授权库cancan或专家将更适合我的情况.
谢谢!
好问题.我在项目中使用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)
Run Code Online (Sandbox Code Playgroud)
要重定向到正确的配置文件,请将此方法添加到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
Run Code Online (Sandbox Code Playgroud)
为了防止从当前用户退出时退出当前管理员,请在此处设置此配置 config/initializers/devise.rb
config.sign_out_all_scopes = false
Run Code Online (Sandbox Code Playgroud)
为了解决您的其他问题,我使用了CanCan和Pundit.我更喜欢Pundit,因为使用CanCan可以为每个请求评估所有权限.使用Pundit,只在需要时才会检查权限.Pundit在我的经历中也更灵活.
归档时间: |
|
查看次数: |
3585 次 |
最近记录: |