Rails 3 限制访问,以便用户只能更新他们的数据

2024-04-06

这看起来应该是相当简单的事情,因为它会被很多需要。我检查用户是否正常登录,但一旦用户登录,他们可能会更改其他人的帐户。例如:假设 ID 为 1 的用户已登录,并且他们将 /users/2/edit 作为 url。这将向他们显示用户 2 的数据并允许他们修改它。当然,我可以改变控制器中的编辑操作以使用类似的东西......

  def edit
    @user = User.find(current_user.id)
  end

其中 current_user 在控制器中设置,因此用户始终是登录的人。如果您只有几个具有几个操作的控制器,这很好,但如果您有很多控制器,这可能会很痛苦。似乎应该有一种方法可以在全球范围内限制这种情况,以便用户无论使用什么操作或控制器都只能更新自己的数据。

有没有办法限制用户只能使用自己的数据进行所有操作?


在你的 application_controller.rb 中你可以尝试这个:

class ApplicationController < ActionController::Base
  before_filter :validate_user

  private

  def validate_user() #might need to pass id and current_user
    if current_user.id == params[:id]
      # continue to current_user url
    else
        flash[:error] = "Please access one of your own pages"
        redirect_to(:back)
    end
  end
end

通过将这些内容放入应用程序控制器中,它应该在所有控制器中可用,但是如果您不需要确认这是当前用户(例如主页),那么您可能需要在任何特定控制器中使用skip_before_filter(对于需要它的特定操作),例如在页面控制器中

class PagesController < ApplicationController
  skip_before_filter :validate_user, :only => [:home, :about]
end

欲了解更多信息,请查看此链接到过滤器上的导轨 http://guides.rubyonrails.org/action_controller_overview.html#filters。也可能有更有效的方法来实现这一目标。

希望能帮助到你

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 3 限制访问,以便用户只能更新他们的数据 的相关文章

  • 在 Rails 表单错误消息中显示链接

    在我们的注册表单上 我们validates uniqueness of email 当用户尝试使用我们的注册表单并指定现有的电子邮件地址时 我希望他们看到这样的错误消息 该邮件地址已被使用 如果您在登录时遇到问题 您可以重置你的密码 htt
  • 如何在 FactoryGirlRails 中定义序列?

    以前在 Factory Girl 中 我们可以像这样定义序列 spec factories rb FactoryGirl define do this is the sequence in question sequence random
  • 如何用虚拟属性更新模型的属性?

    我有一个名为UserPrice其具有属性 purchase date a date select 在其表中 使用我的表单 我可以一次创建多个 user prices 但为了用户方便 我在我的表单中创建了一个虚拟属性UserPrice模型称为
  • 有人在 Rails 功能测试中使用过 Minitest::Spec 吗?

    Minitest 中的规范库很棒 我已经能够在 Rails 单元测试中使用它 没有问题 然而 Rails 功能测试继承自 ActionController TestCase 它在其设置中提供了像 controller 这样的实例变量 有人使
  • 从 User.rb 模型访问 ApplicationHelper

    这是一些不起作用的简单代码 module ApplicationHelper def industries industries Agriculture Food etc end end class User lt ActiveRecord
  • 如何获取包含表的列名的数组

    我需要一个包含表的列名的数组 有什么想法如何使用 Rails 3 0 0rc 做到这一点吗 假设您有一个 Post 模型 Post column names or Post columns map column column name 它将
  • rSpec 和 Rails3 中的存根设计

    如何使用 rSpec 在 Rails 3 中存根 Devise 我有一个UsersController and a User模型 目前 这两者都与 Devise 相关 我正在编写控制器规格 但我真的很难实现作为 Devise 的期望sign
  • Rails 3 ActiveRecord API:.build 方法

    我对 Ruby RoR 相当陌生 一年多了 我注意到 RoR 或 Ruby 内部有几种不同的方法基本上做同样的事情 我想要得到某种澄清的一种方法是 build方法 什么时候使用它是有效的 或者如何以最好的方式使用它 算是一回事 Thanks
  • 助手在 Rails 3(.2) 中使用大量内存

    在将 Rails 2 应用程序迁移到 Rails 3 时 我遇到了内存使用量的巨大增加 经过一番研究 我发现帮助者是问题所在 取消注释视图中的任何助手会加快一切速度 我试图找到真正问题的事情 include all helpers fals
  • 安装 Rails 版本 3.2.15 时出现“Gem::RemoteFetcher::UnknownHostError”

    我之前已经在实时 ubuntu USB 上成功安装了 Rails 3 2 15 并具有数据持久性 现在我已经习惯了操作系统 Ubuntu 12 04 LTS 我已经将它安装在笔记本电脑上 并且正在安装我在实时 USB 中使用的东西 长话短说
  • Rails 从一个邮件程序功能发送 2 封不同的电子邮件

    我有必要这样做 因为对我来说这似乎合乎逻辑 def notification vehicle vehicle vehicle mail to gt vehicle owner email address template name gt n
  • 重置rails中的主键id

    当我从表中删除所有并开始再次插入时 我遇到主键如何递增的问题 这是有问题的 因为我还有与已清除表关联的其他模型 例如 如果我有属于 Computer 的 Apple 那么当我清除 Computer 表并重新添加计算机时 关联会变得混乱 因为
  • “没有路线匹配”错误?

    我是新的 Rspec 刚刚开始在 Rails 3 上生成一个新的控制器 它默认生成一些 Rspec 测试 我有一个关于如何让它们通过的问题 就目前情况而言 我在我的终端中看到了这个测试 1 BuildingsController GET s
  • Rails 管理自定义:将 html 视图嵌入到仪表板中

    我们已从 Rails 管理起始页面删除了仪表板和历史记录 现在我们想嵌入一个谷歌分析页面 供用户查看 GA 的仪表板 该页面由一些简单的 HTML 组成 问题 如何在 Rails 管理仪表板中嵌入 html 页面 答案很简单 我需要创建以下
  • 如何使用 OAuth 2.0 实现 Web 小部件

    我想创建一个 Web 小部件来显示我网站上的信息 该小部件将使用 JavaScript 包含在客户网站的 HTML 中 并且只能用于我的客户 在我的网站上注册的网站 小部件中的信息应该特定于当前正在访问客户站点的用户 因此 我需要对客户端
  • Rspec 控制器错误需要 <"index"> 但使用 <""> 渲染

    作为测试新手 我正在努力让一些控制器测试通过 以下控制器测试会引发错误 expecting lt index gt but rendering with lt gt 我的控制器规格之一具有以下内容 require spec helper d
  • 切换到 zsh 会破坏命令行中的轨道

    我最近刚刚转而使用 zsh 和 oh my zsh 但在使用 Rails 命令行工具时遇到了问题 以下是我执行的步骤以及收到的错误 我运行了github页面提供的curl命令 curl L https github com robbyrus
  • 将 JQuery 日期选择器数据传递到 Rails 控制器

    我是 Rails 和 JQuery 的新手 所以我会尽力解释这一点 我正在尝试将 JQuery 日期选择器值传递给我的 Rails 控制器 该页面上有数据 我希望用户能够根据日期范围进行过滤 关于这个主题有许多不同的帖子 将变量从 jque
  • Rails 验证:将输入限制为特定值

    我正在寻找 Rails Way 来编写验证 将可接受的输入值限制为预定列表 就我而言 我只想接受值 5 2 2 5 和nil 然而 我认为这最好作为一个一般性问题 如何在 Rails 模型中预定义可接受的条目值列表 Thanks valid
  • 如何为开发和生产指定不同版本的 gem

    我需要有不同版本的 gem 进行开发和生产 因此我将以下内容放入我的 gemfile 中 group development test do gem rspec rails 2 11 0 gem bcrypt ruby 3 1 2 end

随机推荐