美文网首页
rails中使用cancancan

rails中使用cancancan

作者: limx | 来源:发表于2016-08-14 10:32 被阅读0次

之前接手了一个项目,用了很多很多的gem包,可以说到了泛滥的地步,当然这其中也包含cancancan了,只是用了其中的皮毛而已。到了现在,要做用户权限管理,当然了,已经用了cancancan了,就在这上面继续开发了,这才是痛苦的开始 。

再做权限开发之前,还没有发现这么多问题:

1、这个项目根本不是restful设计。

2、model和controller不是一一对应的。

这两个问题直接导致了cancancan不能直接用,需要添加一些无用model。

我是如何用cancancan做权限管理的呢?

总体思路:我把用户和角色分开管理,都是一些基础的增删改之类的,再建立一个关系表存放用户和角色的关系(多对多的关系)。把权限管理放在角色里,每个角色单独设置权限,这里我是这么做的,建立权限表,把所有的权限都写入这个表中,然后再建立权限和角色的关系表(也是多对多的关系),在角色里设置权限的时候把它们之间的关系保存在这个表里。

页面上怎么做就更加的灵活了,我是把用户和角色各用一个页面展示,做各自的增删改,只是在添加或修改用户的时候,可以选择多个权限。在角色的页面里,为每个角色增加一个设置权限的按钮,点击进去之后的页面,把所有的权限表里的权限都用checkbox列出来,可以选择并保存。

置于cancancan的用法,我是设置在ability里的,具体的用法参考:https://github.com/CanCanCommunity/cancancan。

这里不能不提load_and_authorize_resource,它加载资源,并且验证权限,有一句话介绍了它:theload_and_authorize_resourcemethod is provided to automatically authorize all actions in a RESTful style resource controller. It will use a before action to load the resource into an instance variable and authorize it for every action.

相关文章

网友评论

      本文标题:rails中使用cancancan

      本文链接:https://www.haomeiwen.com/subject/bxyysttx.html