【问题标题】:Setup Devise to only allow editing of own records?设置只允许编辑自己的记录?
【发布时间】:2010-10-19 08:05:41
【问题描述】:

我在我的 Rails 应用程序中使用了 Devise,但我不知道现在如何锁定它,因此用户只能在用户表和属于用户的表中编辑他们自己的记录。

我在这里缺少什么?这是在控制器还是模型中完成?

【问题讨论】:

    标签: ruby-on-rails authentication devise


    【解决方案1】:

    我会在 application_controller 中为 current_user 创建一个助手,并删除 User.find 的使用

    创建授权的最简单方法是使用布尔标志(管理员真/假)。对于其他简单的解决方案是 cancan,如 Yannis 或 easy_roles KISS 所提到的,建议开始使用。您可以像这样实现编辑操作

    def edit
     if current_user.is_admin?
       User.find(params[:id])
     else
        current_user
     end
    end
    

    application_controller.rb

    def current_user
      UserSession.find
    end
    

    要限制用户的访问,就像用户拥有自己的任务一样,请执行此操作。

    def index
      @tasks = current_user.tasks
    end
    

    【讨论】:

      【解决方案2】:

      Devise 是一种身份验证解决方案。您现在需要一个授权系统。看看 Ryan Bates CanCan (github, railscasts)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-04
        • 1970-01-01
        相关资源
        最近更新 更多