Ruby on rails Rails基于角色的身份验证,角色存储在数据库中

Ruby on rails Rails基于角色的身份验证,角色存储在数据库中,ruby-on-rails,ruby,gem,Ruby On Rails,Ruby,Gem,是否存在实现以下内容的gem: 用户可以有许多角色 每个角色都有一组权限 每个权限都是布尔值 存储在数据库中的角色和权限(最重要) 例如,我想要这样的东西: if current_user.can?(:read_all, :list_of_orders) ... end 和can?方法应进行搜索,是否有任何角色允许进行搜索。请参阅Desive for user authentication,您可以在那里定义您的角色: https://github.com/plataformatec/dev

是否存在实现以下内容的gem:

  • 用户可以有许多角色
  • 每个角色都有一组权限
  • 每个权限都是布尔值
  • 存储在数据库中的角色和权限(最重要)
例如,我想要这样的东西:

if current_user.can?(:read_all, :list_of_orders)
...
end

can?
方法应进行搜索,是否有任何角色允许进行搜索。

请参阅Desive for user authentication,您可以在那里定义您的角色:

https://github.com/plataformatec/devise
或者更好地将其与cancan轻松结合:

https://github.com/ryanb/cancan/wiki/Role-Based-Authorization

请参阅Desive for user authentication,您可以在那里定义您的角色:

https://github.com/plataformatec/devise
或者更好地将其与cancan轻松结合:

https://github.com/ryanb/cancan/wiki/Role-Based-Authorization

你可以试试坎坎宝石,它很强大

例如:

<% if can? :update, @article %>
  <%= link_to "Edit", edit_article_path(@article) %>
<% end %> 

你可以试试坎坎宝石,它很强大

例如:

<% if can? :update, @article %>
  <%= link_to "Edit", edit_article_path(@article) %>
<% end %> 

下面是Zippie问题,我建议您使用CanCan,但您也可以使用它进行身份验证。请参阅以下链接,您会发现这些链接很有用&

你的
能力中可能会有类似的功能。rb

class Ability
  include CanCan::Ability
  def initialize(user)
    user ||= User.new # guest user
   # raise user.role?(:administrator).inspect
    if user.role? :administrator

      can :manage, :all
      can :manage, User

    elsif user.role? :employee
      can :read, :all

    end

  end
end
所以在你的观点中,你可以这样做


您还可以使用控制器中的
can?
创建必要的过滤器

下面是Zippie问题,我建议您使用CanCan,但您也可以使用它进行身份验证。请参阅以下链接,您会发现这些链接很有用&

你的
能力中可能会有类似的功能。rb

class Ability
  include CanCan::Ability
  def initialize(user)
    user ||= User.new # guest user
   # raise user.role?(:administrator).inspect
    if user.role? :administrator

      can :manage, :all
      can :manage, User

    elsif user.role? :employee
      can :read, :all

    end

  end
end
所以在你的观点中,你可以这样做


您还可以使用控制器中的
can?
创建必要的过滤器

是的,cancan是一个很好的解决方案,但我需要DynamicCali(在运行时)管理角色。是的,cancan是一个很好的解决方案,但我需要DynamicCali(在运行时)管理角色。我知道cancan,但它在文件中定义了角色,我无法在应用程序运行时添加一些新角色。经过一些思考后,我希望使用Desive+cancan和存储在模型字段中的序列化角色数组。只是因为不需要角色权限的运行时管理:)我知道cancan,但它在文件中定义了角色,并且我无法在应用程序运行时添加一些新角色。经过一些思考后,我希望使用Desive+cancan和存储在模型字段中的序列化角色数组。只是因为不需要角色权限的运行时管理:)