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来尝试测试。