Выход из системы Worklight не очищает активного пользователя

Я использую Worklight 6.1 и использую обработчик вызовов, чтобы определить, зарегистрирован мой пользователь или нет.

После входа в приложение к моей кнопке выхода из системы прикреплен следующий код:

on(logoutBtn, "click", lang.hitch(this, function() {
    WL.Client.logout('AdapterAuthRealm', { onSuccess:lang.hitch(this, function() {
        this.gotoView("login");
    }), onFailure:lang.hitch(this, function() {
        WL.Logger.error("Unable to logout");
    })});
    return false;
}));

При щелчке по нему открывается окно входа в систему, но когда пользователь пытается войти снова, отображается следующая ошибка:

"Cannot change identity of an already logged in user in realm 'AdapterAuthRealm'.
The application must logout first."`

По следующему такому вопросу:Worklight: WL.Server.setActiveUser - невозможно изменить - недопустимое состояние: невозможно изменить удостоверение

Сначала я должен очистить активного пользователя перед установкой нового:

WL.Server.setActiveUser("AdapterAuthRealm", null);

Я действительно ожидал, что WL.Client.logout сделает это автоматически, но сам по себе в функции onLogout в моем адаптере, похоже, не имеет никакого эффекта:

<realm loginModule="NonValidatingLoginModule" name="AdapterAuthRealm">
  <className>com.worklight.integration.auth.AdapterAuthenticator</className>
  <parameter name="login-function" value="PortalAdapter.onAuthRequired"/>
  <parameter name="logout-function" value="PortalAdapter.onLogout"/>            
</realm>

А также

function onLogout() {
    WL.Logger.info("invoke logout request");
    WL.Server.setActiveUser("AdapterAuthRealm", null);

    var input = {
        method : 'get',
        returnedContentType : 'text/plain',
        path : '/logoutUrl'
    };

    WL.Server.invokeHttp(input);
}

Добавив его в мою функцию входа в мой адаптер следующим образом:

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

Результатом является бесконечный цикл запросов на вход / выход из моего приложения.

Мои вопросы:

Когда и где я должен очистить своего активного пользователя?Разрешается ли при использовании обработчика вызовов использовать метод WL.Client.logout?

Ответы на вопрос(1)

Ваш ответ на вопрос