基于Worklight表单的身份验证:找不到j_security_check

时间:2013-04-22 10:15:47

标签: authentication ibm-mobilefirst j-security-check

我尝试使用Worklight应用程序实现一个非常简单的基于表单的身份验证。但是,当我激活登录功能时,它会因404错误而停止,说无法找到/ apps / services / j_security_check。奇怪的是,当我从IBM的developerWorks站点运行基于表单的身份验证示例时,它运行得很好。我无法弄清楚有什么区别,所有与身份验证有关的功能都完全相同,但是对于我自己的应用程序,我收到此错误消息。以下是来源的相关部分:

   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);
}

知道可能导致这种情况的原因是什么?是否存在我忽略的隐藏项目设置?谢谢!

3 个答案:

答案 0 :(得分:2)

您是否尝试在表单响应到来之前发送您的凭据?这可以解释为什么没有找到404 j_security_check。

答案 1 :(得分:1)

看起来这是Worklight项目的问题。我已经建立了一个新项目并将所有内容复制过来,现在它可以运行了。不知道问题是什么,但它消失了。

答案 2 :(得分:0)

我认为您尚未部署适配器。您可以尝试通过右键对DummyAdapter进行测试 - >运行方式 - >部署适配器。