使用ChallengeHandler.submitChallengeAnswer(credentials)
和WLAuthorizationManager.login(SECURITY_CHECK_NAME, credentials)
之间有什么区别?
答案 0 :(得分:1)
您可能还希望在没有收到任何质询的情况下登录用户。例如,将登录屏幕显示为应用程序的第一个屏幕,或在注销或登录失败后显示登录屏幕。我们将这些场景称为抢先登录。
如果没有质询要求,您无法调用submitChallengeAnswer
API。对于这些方案,Mobile Foundation SDK包含登录API:
WLAuthorizationManager.login(securityCheckName,credentials).then(
function () {
WL.Logger.debug("login onSuccess");
},
function (response) {
WL.Logger.debug("login onFailure: " + JSON.stringify(response));
});
如果凭据错误,安全检查会发回挑战。
根据应用程序的需要,开发人员有责任知道何时使用login
而不是submitChallengeAnswer
。实现此目的的一种方法是定义布尔标志,例如isChallenged
,并在达到true
时将其设置为handleChallenge
,或者在任何其他设置中将其设置为false
案例(失败,成功,初始化等)。
当用户单击“登录”按钮时,您可以动态选择要使用的API:
if (isChallenged){
userLoginChallengeHandler.submitChallengeAnswer(credentials);
} else {
WLAuthorizationManager.login(securityCheckName,credentials).then(
//...
);
}
答案 1 :(得分:0)
MobileFirst实施OAuth 2授权框架https://www.ibm.com/support/knowledgecenter/en/SSHS8R_8.0.0/com.ibm.worklight.dev.doc/dev/c_oauth_security_model.html。实施过程分为两个阶段:获取访问令牌,以及
使用访问令牌访问受保护资源
ChallengeHandler API用于实现第一阶段,即获取
访问令牌。 WLAuthorizationManager API用于实现
第二阶段,访问受保护的资源。可以找到更多细节
在https://www.ibm.com/support/knowledgecenter/SSHS8R_8.0.0/com.ibm.worklight.dev.doc/dev/c_oauth_client_apis.html?view=embed#c_oauth_client_apis