2015-09-17 47 views
0

我们在application-descriptor.xml中定义了应用安全性的worklight应用。我们有挑战处理者来应对挑战。在wlCommonInit()函数中,我们称WL.Client.Connect()函数轮流触发质询处理程序。用户可以输入用户名/密码并成功验证。一切都很好,直到这一点。Worklight App提交大量HTTP 401请求

在挑战处理程序成功验证后,我们调用ChallengeHandler.submitSuccess()方法来通知worklight关于成功验证。

此调用应导致成WL.client.connect() onSuccess回调函数,而是它使大量的请求URL ../App/iphone/init并与401后1-2分钟,最终它得到HTTP 200为特定请求retuns然后进入onSuccess()

任何想法为什么这么多请求导致401?

下面的代码片段,在main.js ...

  WL.Client.connect({ 
       onSuccess : callbackOnSuccess, 
       onFailure : callbackOnFailure 
      }); 
在challengeHandler.js

..

$('#loginButton').bind('click', function() { 
    var reqURL = '/j_security_check'; 
    var options = {}; 
    options.parameters = { 
      j_username : $('#username').val(), 
      j_password : $('#password').val() 
    }; 
    options.headers = {}; 
    ChallengeHandler.submitLoginForm(reqURL, options, ChallengeHandler.submitLoginFormCallback); 
}); 

ChallengeHandler.submitLoginFormCallback = function(response) { 
     WASLTPARealmChallengeHandler.submitSuccess(); 
}; 

回答

1

理论:

你有一个单一的MobileFirst服务器或多个?

  • 如果你只有一台服务器,这将有助于从工具获得网络流量日志Wireshark等
  • 如果多台服务器,你随后还碰巧有一个负载平衡器参与?

    为了验证成功通过,会有几个请求 - 第一个用于触发质询处理程序,第二个用于传输用户凭证。这些需要到达同一台服务器。

    如果Load Balancer配置错误,请求可能会遇到不同的MobileFirst服务器。它确实声音如请求得到的服务器则意味着一个认证请求命中一个服务器,但该证书请求之间弹击中另一...

    因此,在多台服务器的情况下,你需要确保粘性会话在使用的负载均衡器中启用了选项

+0

更新:您是正确的。我们在农场有两台服务器,似乎web服务器插件没有设置会话关联。非常感谢您的回复。 –