• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

Still_Walking

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

rails中使用cancancan

  之前接手了一个项目,用了很多很多的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.

posted on 2016-08-14 10:29  limanxian  阅读(753)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3