2013-04-22 63 views
1

我試圖使用Worklight應用程序實現非常簡單的基於表單的身份驗證。但是,當我激活登錄功能時,它會停止發生404錯誤,並說找不到/ apps/services/j_security_check。奇怪的是,當我從IBM的developerWorks站點運行基於表單的身份驗證示例時,它工作得很好。我無法弄清楚區別是什麼,所有與身份驗證有關的功能都完全相同,但是使用我自己的應用程序,我收到了此錯誤消息。以下是來源的相關部分:基於Worklight表單的身份驗證:未找到j_security_check

var sampleAppRealmChallengeHandler = WL.Client.createChallengeHandler("SampleAppRealm"); 

sampleAppRealmChallengeHandler.isCustomResponse = function(response) { 
    if (!response || response.responseText === null) { 
     return false; 
    } 
    var indicatorIdx = response.responseText.search('j_security_check'); 

    if (indicatorIdx >= 0){ 
     return true; 
    } 
    return false; 
}; 

sampleAppRealmChallengeHandler.handleChallenge = function(response) { 
    $.mobile.changePage($('#Login')); 
    $('#passwordInputField').val(''); 
}; 

sampleAppRealmChallengeHandler.submitLoginFormCallback = function(response) { 
    var isLoginFormResponse = sampleAppRealmChallengeHandler.isCustomResponse(response); 
    if (isLoginFormResponse){ 
     sampleAppRealmChallengeHandler.handleChallenge(response); 
    } else { 
     $.mobile.changePage($('#page0')); 
     sampleAppRealmChallengeHandler.submitSuccess(); 
    } 
}; 

function proceedWithLogin() { 

    console.log("proceedWithLogin"); 

    var reqURL = '/j_security_check'; 
    var options = {}; 
    options.parameters = { 
     j_username : $('#loginEmail').val(), 
     j_password : $('#loginPassword').val() 
    }; 
    options.headers = {}; 
    sampleAppRealmChallengeHandler.submitLoginForm(reqURL, options, sampleAppRealmChallengeHandler.submitLoginFormCallback); 
} 

任何想法可能導致這種情況?有沒有隱藏的項目設置,我忽略了?謝謝!

回答

1

看起來像是Worklight項目的問題。我已經建立了一個新項目並複製所有內容,現在它可以正常工作。不知道問題是什麼,但它消失了。

2

難道是你試圖發送你的憑證之前,與窗體的響應已到達?這將解釋接收404未找到j_security_check。

+0

不是我所知道的。輸入用戶名和密碼後,當用戶單擊登錄按鈕時,我會觸發函數proceedWithLogin。在此之前,我沒有做任何登錄方面的事情。 – 2013-04-23 08:01:58

+0

每次嘗試登錄時都會發生這種情況,或者一次又一次地發生。我看到了同樣的問題 - 但它只是偶爾404s。 – RenegadeAndy 2013-04-23 10:27:54

+0

每一次。 – 2013-04-23 12:01:30

0

我想你還沒有部署適配器。你可以在部署DummyAdapter之後通過在它上面右擊 - > Run As - > Deploy Adapter來嘗試測試。

相關問題