挑战不能处理基于适配器的身份验证的挑战

时间:2016-03-22 14:10:38

标签: ibm-mobilefirst mobilefirst-adapters

我一直在尝试为应用程序开发基于适配器的身份验证,而且我不太清楚为什么挑战处理程序不会在这里被触发。

客户端main.js:



var AuthenticationHandler = WL.Client.createChallengeHandler("EventAuthRealm");

AuthenticationHandler.isCustomResponse = function(response) {
  if (!response || !response.responseJSON || response.responseText === null) {
    return false;
  }
  if (typeof(response.responseJSON.authStatus) !== 'undefined') {
    return true;
  } else {
    return false;
  }
};

AuthenticationHandler.handleChallenge = function(response) {
  var authRequired = response.responseJSON.authRequired;

  if (authRequired == false) {

    WL.logger.debug("done");
    busyIndicator.hide();
    AuthenticationHandler.submitSuccess();
    toEventList(); //function to navigate to next page


  } else if (authRequired == true) {

    WL.logger.debug("false");
    busyIndicator.hide();
    AuthenticationHandler.submitFailure();
    WL.Logger.debug(response.responseJSON.errorMessage);
  }
};




登录功能:



function login() {

  var reg = $("#attendeeId").val();
  var userpw = $("#attendeePw").val();

  busyIndicator.show();
  var invocationData = {
    adapter: "eventdbAdapter",
    procedure: "submitAuthentication",
    parameters: [reg, userpw]
  };

  AuthenticationHandler.submitAdapterAuthentication(invocationData, {});

};




登录页面的HTML代码:



<div data-role="page" id="eventloginpage">
  <div data-role="header" align="center" data-theme="b">Event app</div>

  <div data-role="content" style="padding: 15px" id="wat">
    <input type="text" name="attId" id="attendeeId" placeholder="Attendee ID">
    <input type="password" name="password" id="attendeePw" placeholder="Attendee Password">

    <!-- Buttons here -->
    <a href="#" data-role="button" id="loginButton" data-theme="b" onclick="login();">Login</a>
    <a href="#" data-role="button" id="button" onclick="logout();">Logout for now</a>
  </div>

  <div data-role="footer" align="center">Text</div>
</div>
&#13;
&#13;
&#13;

如果这可能是相关的,我在使用pagecontainer更改的教程之后构建了应用程序的多页面组件。

示例:

&#13;
&#13;
function toEventList() {
  $(':mobile-pagecontainer').pagecontainer('change', 'eventpage.html');
}
&#13;
&#13;
&#13;

每当我执行登录功能时,一切都按预期工作,直到调用submitAdapterAuthentication为止。

Google Dev控制台会在请求中返回超时。在Android设备上执行应用程序时,Logcat会显示状态代码201.我只能假设使用从字段收集的信息成功创建了对象,但是,处理程序根本不提交凭据。

非常感谢任何建议。如果我的帖子看起来很傻,我会提前道歉,因为我对MobileFirst和Web技术一般都不太熟悉。

2 个答案:

答案 0 :(得分:0)

了解您正在使用的MFP版本会很有帮助,以便您查看相应的文档。

请确保在wlCommonInit()中实现了以下内容。从这里的文档Documentation可以看出,需要联系worklight服务器

WL.Client.connect(         {             onSuccess:onConnectSuccess,                 onFailure:onConnectFailure             });

答案 1 :(得分:0)

我弄清楚为什么它之前没有正常工作。在适配器端,我没有对submitAuthentication()中的测试登录值使用严格的相等运算符,如示例中所示。我假设其他类型的相等运算符可以工作,但是,似乎并非如此。据我所知,这不是在任何文档中写的。

我之前提到的401错误似乎是MobileFirst服务器根据文档对其中一个内置组件执行的检查。

我还确保清理服务器并在其上重新部署应用程序。