5
我設法設置了json身份驗證。我執行下面的代碼:通過json設計失敗身份驗證返回html而不是json
class Users:: SessionsController < Devise::SessionsController
def create
respond_to do |format|
format.html { super }
format.json {
warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")
render :json => {:success => true}
}
end
end
def destroy
respond_to do |format|
format.html {super}
format.json {
Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)
render :json => {}
}
end
end
def failure
render :json => {:success => false, :errors => ["Login Failed"]}
end
end
這工作得很好,但在驗證失敗,失敗犯規返回JSON失敗。對於設計我有一個自定義的失敗。如果我刪除了redirect_url或完全刪除了客戶失敗,那麼身份驗證將返回帶有失敗消息的json。我的自定義故障如下:
class CustomFailure < Devise::FailureApp
def redirect_url
#return super unless [:worker, :employer, :user].include?(scope) #make it specific to a scope
'/'
end
# You need to override respond to eliminate recall
def respond
if http_auth?
http_auth
else
redirect
end
end
末
反正保持重定向如果一個HTML請求,並具有故障味精如果JSON請求返回一個JSON?
謝謝!