Я пытаюсь сделать систему аутентификации 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()? Две причины:
- Белый экран и перезагрузка всего приложения просто грязные, это совсем не удобно.
- 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
Спасибо и извините за длинный пост
Hi. Хотя у меня нет для вас решения, я хотел бы сообщить вам, что ошибка с WL.Client.reloadApp, не работающая в Android 5.0, исследуется. Спасибо за отчет. –
Я уже нашел обходное решение для своего приложения, это связано с необходимостью вообще не использовать WL.Client.reloadApp(). Я также тестировал WL.Client.reloadApp без каких-либо других. Я имею в виду: Нет AngularJS, не Ионный, ничего. Только чистый html css и javascript. Он по-прежнему только сбой на android 5.0 – ErikBrandsma
Спасибо. Можете ли вы написать свое решение в качестве ответа для других, чтобы извлечь из этого выгоду? –