IBM Worklight 6.1 - Angularjs控制器中的挑战处理程序

时间:2014-05-20 21:31:31

标签: angularjs ibm-mobilefirst worklight-adapters

我正在使用基于适配器的身份验证,我正在尝试使用AngularJS实现。我有一个保护应用程序和所有程序的领域。我已经定义了一个处理身份验证相关活动的登录控制器:

注意:在Chrome和Worklight Development Server上使用MBS进行测试

 $scope.sampleAppRealmChallengeHandler = WL.Client.createChallengeHandler("LoginBluePageRealm");
 $scope.sampleAppRealmChallengeHandler.isCustomResponse = $scope.isCustomResponse;
 $scope.sampleAppRealmChallengeHandler.handleChallenge = $scope.handleChallenge;    

登录视图是由于发出WL.Client.connect()而显示的初始视图,身份验证可以正常收集凭据,并从登录视图转换到主菜单视图。

我导致与服务器的连接失败(通过重新启动WL dev服务器),然后在应用程序中选择将调用受保护的适配器调用的活动。我在JavaScript控制台中看到了$scope.isCustomResponse(),但是$scope.handleChallenge();没有进入。

在$ scope中定义质询支持是否有任何问题,或者是否要求在$ rootScope级别定义它们。

感谢在AngularJS中定义身份验证的任何建议。

2 个答案:

答案 0 :(得分:0)

您可以将日志添加到isCustomResponse以实际查看它所获得的responseText / responseJson属性吗?另外 - 在从isCustomResponse返回true / false之前记录您的响应。如果isCustomResponse返回false,则不会调用handleChallenge函数,因此您可能会遗漏一些if。

答案 1 :(得分:0)

一般情况下,您不应该通过$ scope定义您希望在Angular中保留的任何javascript对象。 Angular可以随时破坏$ scope变量。相反,将挑战处理程序包装在Angular服务/工厂定义中,因为这些是持久存在的单例。这是一个很好的视频我建议观看Worklight + Angular。 https://www.youtube.com/watch?v=a89W_atlhjg