码迷,mamicode.com
首页 > 其他好文 > 详细

rails中使用cancancan

时间:2016-08-14 11:38:09      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

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

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

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

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

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

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

这里不能不提load_and_authorize_resource,它加载资源,并且验证权限,有一句话介绍了它:the load_and_authorize_resource method 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

标签:

原文地址:http://www.cnblogs.com/limx/p/5769564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!