use*_*052 10 ruby security json ruby-on-rails ruby-on-rails-3
我正在使用Ruby on Rails 3,我想覆盖(可能在模型文件中)as_json或to_json方法,以便在respond_to不包含某些信息的情况下进行HTTP请求.
在我的帐户模型中,我有
def as_json(options = {})
super(
:except => [
:password
]
)
end
Run Code Online (Sandbox Code Playgroud)
在我的控制器中我有
format.json {
render :json => @account, :status => 200
}
Run Code Online (Sandbox Code Playgroud)
例如,当我提出请求时,/account/1.json我还要回到密码属性,出于安全考虑,我不想要.
那么,如何防止包含指定信息?
我能做到这一点并且有效
format.json {
render :json => @account.to_json(:except => [:password]), :status => 200
}
Run Code Online (Sandbox Code Playgroud)
但我需要重构.
tom*_*sop 13
如果它只在一个动作中你可以尝试:
format.json { render :json => @account, :except => :password }
Run Code Online (Sandbox Code Playgroud)
如果您需要多个动作,那么覆盖会更好:
# Exclude password info from json output.
def to_json(options={})
options[:except] ||= :password
super
end
Run Code Online (Sandbox Code Playgroud)
同样适合as_json
# Exclude password info from json output.
def as_json(options={})
options[:except] ||= :password
super
end
Run Code Online (Sandbox Code Playgroud)