ruby-on-rails - 如何覆盖 'as_json' 或 'to_json' 方法,以便 'respond_to' 不包含指定信息?

标签 ruby-on-rails ruby security json ruby-on-rails-3

我正在使用 Ruby on Rails 3,我想覆盖(可能在模型文件中)as_jsonto_json 方法以respond_to 不包含某些信息的 HTTP 请求。

在我的帐户模型中我有

def as_json(options = {})
  super(
    :except => [
      :password
    ]
  )
end

在我的 Controller 中我有

format.json {
  render :json => @account, :status => 200
}

例如,当我向 /account/1.json 发出请求时,我还返回了出于安全原因我不想要的密码属性。

那么,如何防止包含指定信息?


我能做到,而且行得通

format.json {
  render :json => @account.to_json(:except => [:password]), :status => 200
}

但我需要重构

最佳答案

如果只有一个 Action 你可以试试:

format.json { render :json => @account, :except => :password }

如果您需要它执行多个操作,那么覆盖会更好:

# Exclude password info from json output.
def to_json(options={})
  options[:except] ||= :password
  super
end 

as_json 也一样

# Exclude password info from json output.
def as_json(options={})
  options[:except] ||= :password
  super
end

关于ruby-on-rails - 如何覆盖 'as_json' 或 'to_json' 方法,以便 'respond_to' 不包含指定信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5193854/

相关文章:

ruby-on-rails - OpenSocial 服务器实现

用于 2 路 ssl 身份验证的 Ruby 客户端

Ruby 调试输出 - 轻松打开/关闭

javascript - 通过json访问一个URL,在chrome中可以通过提供User/Pass打开

ruby-on-rails - Base64编码字符串到文件(Ruby on Rails)

mysql - 在 Rails 4.0 中选择标签和多对多关系

ruby-on-rails - 运行 Rails 服务器时输入终端命令

php readfile ('folder/subfolder' .$_GET ['userInput' ]) 安全问题?

html - 有哪些 HTML 表单攻击媒介?

ruby-on-rails - Rails的skip_callback如果条件不起作用