log*_*esh 2 json ruby-on-rails devise ruby-on-rails-3
我使用设计进行身份验证和注册控制器,如果由于某种原因无法创建用户,那么它会生成json响应
{"email":["已被拍摄"],"密码":["与确认不符"],"用户名":["已被拍摄"]}
但我希望将其更改为以下内容
{"error":{"email":{"已被占用"},"密码":{"与确认不符"},"用户名":{"已被占用"}}}
我怎样才能做到这一点?
如果在使用Devise进行失败的登录尝试时寻找如何自定义json错误响应时,其他人偶然发现这个问题的参考,关键是使用您自己的自定义FailureApp实现.(您也可以使用此方法覆盖某些重定向行为.)
class CustomFailureApp < Devise::FailureApp
def respond
if request.format == :json
json_error_response
else
super
end
end
def json_error_response
self.status = 401
self.content_type = "application/json"
self.response_body = [ { message: "Your email or password is incorrect."} ].to_json
end
end
Run Code Online (Sandbox Code Playgroud)
并在你的devise.rb,寻找config.warden部分:
config.warden do |manager|
manager.failure_app = CustomFailureApp
end
Run Code Online (Sandbox Code Playgroud)
一些相关信息:
起初我还以为我将不得不重写设计:: SessionsController,可能使用recall传递给选项warden.authenticate!,但提到这里,"召回不能调用的API请求,只为导航的.如果你想自定义HTTP状态代码,在失败的应用程序级别,你会有更好的运气."
| 归档时间: |
|
| 查看次数: |
2328 次 |
| 最近记录: |