ruby-on-rails-3 – 我可以将RefineryCMS与Cancan或类似产品一起
我正在考虑将RefineryCMS用于大型网络应用程序,其中包括新闻通讯,博客,论坛,教程等.创建我所知道的那些我认识的RefineryCMS会很棒.
我的问题是,RefineryCMS可以处理不同类型的用户具有不同类型的访问/权限吗? 如果我有一个“会员”用户,我想让他们能够访问博客和论坛,但如果我有一个“高级”用户,他们应该有权阅读新闻通讯,论坛和教程. “admin”用户应该能够管理和查看网站中的所有内容. 这种细粒度控制是否属于RefineryCMS的范围,我应该考虑从头开始创建这个网站吗? 解决方法
是的,您可以通过在适当的refinerycms控制器中添加before_filter来添加细粒度控制.在那个before_filter中你可以使用CanCan,但是refinerycms已经有了一个你可以轻松利用的角色表.
例如,这是控制博客访问的一种方法. 使用您选择的控制台或其他界面,添加title =“member”的新角色. 使用title =“premium_user”添加另一个 然后(如果您的身份验证模型称为用户),在控制台中 >member1 = User.find(1) >member1.roles << Role.where(:title=>"member").first >member1.save 同样,您可以将“premium_user”角色添加到正确的用户. 创建MyApp / lib / restrict_blog_to_member_role.rb module RestrictBlogToMemberRole def restrict_blog_to_member_role return true unless !(current_user.try(:has_role? "member") flash[:notice]="Please become a member with us before accessing the blog." redirect_to home_path #or some other destination path that exists return false end end 在MyApp / config / application.rb中,设置before_filter,以便它在开发模式下的每次调用时重新加载,以防您在服务器运行时更??改它…. module MyApp class Application < Rails::Application .... config.before_initialize do require 'restrict_blog_to_member_role' end config.to_prepare do BlogController.send :include,RestrictBlogToMemberRole BlogController.send :before_filter,:restrict_blog_to_member_role end .... end end 您可以对其他炼油厂控制器(如PagesController,Admin :: BaseController,Admin :: RefinerySettingsController,Admin :: Blog :: PostsController等)执行相同操作,并添加处理其他角色(如“premium_user”)的方法,具体取决于授权规则你想实施. 或者,您可以使用直接覆盖app / controllers文件夹中的精炼厂控制器 rake refinery:override controller=blog_controller #for example. 然后,您可以将调用合并到CanCan之类的内容,或直接添加上面的过滤器.如果覆盖,则在更改时更新refinerycms会有点困难,因为您需要在更改时重新覆盖并重新合并代码与最新版本的控制器. Re:“admin”用户,refinerycms已经开始利用title =“超级用户”的角色,并要求至少有一个用户拥有该角色.它预先配置了一些授权逻辑,超级用户可以做什么,没有那个角色的人不能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |