加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails应用程序中的动态角色和权限系统

发布时间:2020-12-16 20:23:19 所属栏目:百科 来源:网络整理
导读:我需要在我的Rails应用程序中创建基于角色的权限系统.我会对CanCan感到非常满意,但主要的问题是它必须是动态的,所以管理员必须能够分配权限并创建新的角色.权限可以是简单的控制器/操作限制,并且可以是数据相关的,例如一些用户可以仅编辑自己的配置文件,并且
我需要在我的Rails应用程序中创建基于角色的权限系统.我会对CanCan感到非常满意,但主要的问题是它必须是动态的,所以管理员必须能够分配权限并创建新的角色.权限可以是简单的控制器/操作限制,并且可以是数据相关的,例如一些用户可以仅编辑自己的配置文件,并且其中一些用户可以编辑特定组中的所有用户的配置文件.并且允许管理员创建新的权限将是非常好的.

我在想的是将数据库存储在控制器/操作中,以及一些数据相关的限制(我在这里确定了定义它们的方式真的很困惑).那么你可以给我一些建议,什么是组织权限的最佳方法?

任何想法都非常感激

解决方法

如果你喜欢CanCan,那么我认为最好使用它.这是一个关于在数据库中存储能力的简短教程,因此非程序员可以更新它们:

https://github.com/ryanb/cancan/wiki/Abilities-in-Database

如果你真的,真的想自己实现这样的系统.根据您的需要,我会建议您尽可能简单地实施.

在这种情况下,您只需要用户才能访问模块(某些控制器).你可以做:

1)存储所有用户权限就像序列化字段 – > http://apidock.com/rails/ActiveRecord/Base/serialize/class

class User
  serialize :permissions,Array

  def access_to?(module)
    permissions.include? module.to_s
  end
end

一些检查设置此字段将是不错的.

2)如果当前用户有权访问该控制器,则只需在每个控制器的顶部进行检查(部分)

class ApplicationController
   private

   def self.require_access_to(module)
      before_filter do |c|
        unless c.send(:current_user).try :access_to?(module)
          c.send :render_no_presmissions_page
        end
      end
   endposible
end

class AdminNewsController
   require_access_to :news
end

当然这只是一个开始的位置,从那里你可以很容易的发展.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读