1

登录视图模型.js

function login(){
       var username='worklight';
      var password = 'worklight';
    var invocationData = {
            adapter : "AuthenticationAdapter",
            procedure : "submitAuthentication",
            parameters : [ username, password ]
        };

        adapterAuthRealmChallengeHandler.submitAdapterAuthentication(invocationData, {});

AdapterAuthRealmChallengeProcessor.js

var adapterAuthRealmChallengeHandler = WL.Client.createChallengeHandler("AdapterAuthRealm");

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

adapterAuthRealmChallengeHandler.handleChallenge = function(response){

var authRequired = response.responseJSON.authRequired;

if (authRequired == true){
    window.location = "#login";
    alert(response.responseJSON.errorMessage);

} else if (authRequired == false){
    adapterAuthRealmChallengeHandler.submitSuccess();
    window.location = "#Home";

}
};

AuthenticationAdapter-impl.js

function onAuthRequired(headers, errorMessage){
    errorMessage = errorMessage ? errorMessage : null;

    return {
    authRequired: true,
    errorMessage: errorMessage
    };
}

function submitAuthentication(username, password){

    var userIdentity = {
            userId: username,
            displayName: username, 
            attributes: {
                foo: "bar"
            }
    };
    WL.Server.setActiveUser("AdapterAuthRealm", userIdentity);

    return { 
        authRequired: false 
    };

}

我无法设置 setActiveUser。如何设置并获取它。以上是我必须为维护会话所做的工作。这是正确的方法吗。有时我收到错误非法状态:无法更改领域“适配器 AuthRealm”中已登录用户的身份。应用程序必须先注销。如果我首先尝试将其设置为 null,那么它会导致我的应用程序进入尝试进行身份验证的无限循环。知道为什么我会看到这种行为吗?有什么我做错了吗?请帮帮我。

4

1 回答 1

0

检查 SO answer for Worklight logout does not clear active user

尝试在注销成功时重新加载应用程序。

WL.Client.logout("AdapterAuthRealm",{
                onSuccess: function(){ WL.Client.reloadApp(); },
                onFailure: function(){ WL.Logger.debug("Error on logout");}
            });    

您可以使用 wl 客户端 Java 脚本 API 检查领域是否经过身份验证

WL.Client.isUserAuthenticated("AdapterAuthRealm");
于 2014-07-22T13:43:54.290 回答