例如......
module Api
module V1
class SessionsController < ApplicationController
respond_to :json
skip_before_filter :verify_authenticity_token
def create
@user = User.find_by(email: params[:session][:email].downcase)
if @user && @user.authenticate(params[:session][:password])
token = User.new_remember_token
@user.update_attribute(:remember_token, User.digest(token))
respond_with :api, :v1, _____________
else
#error
end
end
end
end
end
代码的#error部分,如果用户未经过适当的身份验证。我需要使用什么语法向调用者正确传达身份验证未通过的示例,或者在其他情况下,可能还没有保存数据?
答案 0 :(得分:6)
如同CBroe所说,使用适当的状态代码(例如400或403)进行回复。您可以这样做(使用&#39; head&#39;仅返回状态代码),或者还添加错误消息JSON格式:
{ 'error' : 'Authorization failed' }
客户端代码需要检查状态代码以及可能的错误&#39;键入JSON响应并适当地处理它。
放在控制器操作结束时的示例(选择一个):
return head(:bad_request) # returns a 400 status code only
render :json => { :error => 'That was an invalid request' } # defaults to 200 status
render :json => { :error => 'Oops! Bad request' }, :status => 400
最后一个示例会覆盖默认状态以使其为400.通常,状态可以是类似的整数,也可以是符号,如:not_found或:bad_request。希望有所帮助。