1

Я пытаюсь сделать систему аутентификации LDAP с использованием IBM Worklight Студии 6.2.0.01Worklight LDAP Authentication Выход из LDAPRealm

Система Логина работает отлично, никаких проблем с этой стороной, но функция выхода из системы фактически не выйдите из системы!

Realm:

<realm loginModule="LDAPLoginModule" name="LDAPRealm"> 
    <className>com.worklight.core.auth.ext.FormBasedAuthenticator</className> 
</realm> 

LoginModule:

<loginModule name="LDAPLoginModule"> 
    <className>com.worklight.core.auth.ext.LdapLoginModule</className> 
    <parameter name="ldapProviderUrl" value="<Correct LDAP URL (For security left blank on stackoverflow)>"/> 
    <parameter name="ldapTimeoutMs" value="2000"/> 
    <parameter name="ldapSecurityAuthentication" value="simple"/> 
    <parameter name="validationType" value="exists"/> 
    <parameter name="ldapSecurityPrincipalPattern" value="{username}"/> 
</loginModule> 

SecurityTest:

<customSecurityTest name="LDAPSecurityTest"> 
    <test realm="wl_directUpdateRealm" step="1"/> 
    <test isInternalUserID="true" realm="LDAPRealm"/> 
</customSecurityTest> 

AdapterXML (важная часть)

<procedure name="getUsername" securityTest="LDAPSecurityTest" /> 
<procedure name="onLogout" /> 

AdapterJS

function getUsername(){ 
    return {username: ""}; 
} 

function onLogout(){ 
    WL.Server.setActiveUser("LDAPRealm", null); 
} 

Функция GetUserName вызывается каждый раз, когда приложение хочет, чтобы проверить, является ли пользователь в настоящее время вошли в систему, она не имеет никакой функции, кроме этого.

Функция выхода из системы (App-сторона)

$scope.setUsername = function(){ 
    var invocationData = { adapter: "DummyAdapter", procedure: "getUsername"} 
    WL.Client.invokeProcedure(invocationData, { 
     onSuccess: function(result){}, 
     onFailure: function(result){); 
} 

$scope.logout = function(){ 
    WL.Client.logout("LDAPRealm", {onSuccess: $scope.setUsername}); 
} 

Результат: Это делает приложение, перейдите на страницу входа в систему, заметив, что пользователь вышел из системы, только проблема .. это не полностью вышел из системы. Что я могу сделать, чтобы пользователь полностью вышел из системы?

PS: Почему я не пользуюсь WL.Client.reloadApp после WL.Client.logout()? Две причины:

  1. Белый экран и перезагрузка всего приложения просто грязные, это совсем не удобно.
  2. WL.Client.reloadApp дает фатальный сигнал 11 (код 1) на Android Lollipop (Android 5.0). По крайней мере, это с моей версией рабочего света (6.2.0.01).

Пожалуйста, есть способ, я могу избежать WL.Client.reloadApp и до сих пор выход пользователя с сервера? Если нет: что может привести к ошибке фатального сигнала 11 (код 1) в Android Lollipop? Я тестировал его полностью на iOS 8.0, Android 2.3.5, Android 4.4.2 и Android 5.0. Только одна, которая не является 5,0

Спасибо и извините за длинный пост

+0

Hi. Хотя у меня нет для вас решения, я хотел бы сообщить вам, что ошибка с WL.Client.reloadApp, не работающая в Android 5.0, исследуется. Спасибо за отчет. –

+0

Я уже нашел обходное решение для своего приложения, это связано с необходимостью вообще не использовать WL.Client.reloadApp(). Я также тестировал WL.Client.reloadApp без каких-либо других. Я имею в виду: Нет AngularJS, не Ионный, ничего. Только чистый html css и javascript. Он по-прежнему только сбой на android 5.0 – ErikBrandsma

+0

Спасибо. Можете ли вы написать свое решение в качестве ответа для других, чтобы извлечь из этого выгоду? –

ответ

1

Я исправил проблему путем удаления функции WL.Client.reloadApp от выхода из системы OnSuccess, я сделал это так:

$scope.logout = function(){ 
     WL.Client.logout("LDAPRealm", {onSuccess: function(){ 
      $scope.setUsername() // <-- this function is the secret function 
           //  that triggers the securitytest 
           //  which then gives back the login page because 
           //  you had just logged out :) 
     }}); 
} 

Что касается адаптера, который не выдает пользователя: этот комментарий был ложным, эта ошибка возникла из-за другой проблемы. Поэтому мой код, который был опубликован в StackOverflow, был в порядке. Но все же:

Android 5.0 и WL.Client.reloadApp не идут в нуль (5 ноября 2014 года, если обновление исправлено)

+0

Редактировать: Даже если WL.Client.reloadApp будет работать, я бы предпочел это, потому что это решение не дает пользователю мигающий экран. Что более удобно – ErikBrandsma

 Смежные вопросы

  • Нет связанных вопросов^_^