我需要提供动态角色分配(角色/权限)。更明确地说,最终用户应该能够创建角色,为新用户分配权限。所以我想在每个用户的表中存储角色和权限。
有没有一种聪明的方法可以做到这一点(任何其他插件?),或者我应该使用声明性授权来编写代码来执行此操作。一些光会有所帮助。谢谢!
答案 0 :(得分:1)
尝试回答这些问题以便更接近解决方案:
答案 1 :(得分:1)
我最近在一个项目中使用了CanCan并认为它非常酷。您创建一个Ability类并使用它来决定用户是否可以执行操作...您可以检查方法中表中是否存在权限,或者他们的规则集是否允许操作。
我从github自述文件中获取了所有这些示例代码:
class Ability
include CanCan::Ability
def initialize(user)
if user.admin?
can :manage, :all
else
can :read, :all
end
end
end
然后在您的视图和控制器中,您可以检查授权级别
<% if can? :update, @article %>
<%= link_to "Edit", edit_article_path(@article) %>
<% end %>
def show
@article = Article.find(params[:id])
authorize! :read, @article
end
答案 2 :(得分:1)
Cancan非常适合简单/启动项目,但如果你有一个单一的应用程序,你肯定应该包装它。康康应该是早期解决方案,但不是最终解决方案。如果您正在查看策略对象(专家),那么您可能需要构建自己的授权模型。像集成这样的授权会因客户而异,如果您正在寻找更具动态性的解决方案,或者您有太多的角色可言,那么cancan就不适合您。您可能需要更多数据驱动的安全模型。例如,如果您可以授予其他人访问实体的权限。