1
我正在構建一個基於angularJS的應用程序,並且正在我的nodeJS後端運行passportjs。 身份驗證有效,但錯誤處理並不像我想要的那樣精確。例如,當我查詢我的MongoDB和失敗的東西我做到以下幾點:AngularJS get passportjs策略失敗消息
節點:
response.send(406, {error: "Email already in use"});
角:
settingsService.saveUserOnServer($scope.settings).then(
function (user) {
//Success
},
function (response) {
console.log(response);
var error = response.data.error;
$cordovaToast.show(error, 'short', 'bottom');
});
這將敬酒「電子郵件已在使用」。我想有相同的功能使用passportjs時:
// if no user is found, return the message
if (!user)
return done(null, false, {message: 'No user found'});
這是我得到的角響應:
Object {data: "Unauthorized", status: 401, headers: function, config: Object, statusText: "Unauthorized"}
我怎樣才能找回「找不到用戶」的消息?提前致謝!
請不要濫用HTTP狀態代碼。 406表示服務器無法根據客戶端發送的**「Accept」頭**完成請求,意思是「不可接受」,請參閱http://www.w3.org/Protocols/rfc2616/rfc2616 -sec10.html。至於問題本身,你確定通過電線發送了什麼?使用調試代理或網絡嗅探器來檢查實際的響應,可能是干擾... – mnemosyn 2014-11-05 15:47:23
我正在尋找一個正確的狀態碼,但是能夠找到一個正確的1,是不是有一個可接受的一般? – Jdruwe 2014-11-05 16:24:35
確實很棘手。在「電子郵件已在使用中」的情況下,我們可以選擇HTTP 409「衝突」,但如果電子郵件在URL中,我認爲它確實是正確的。否則,WebDAV的非常通用的422「不可處理的實體」是我認爲的一個很好的默認值(服務器理解的請求但因語義原因而被拒絕)。 – mnemosyn 2014-11-05 16:37:41