我正在使用基于适配器的身份验证,我正在尝试使用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中定义身份验证的任何建议。
答案 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