我試圖讓使用IBM工作燈工作室6.2.0.01工作燈LDAP身份驗證註銷從LDAPRealm
登錄系統工作正常,那部分沒有問題的LDAP認證系統,但註銷功能實際上並不註銷用戶!
領域:
<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函數被調用每次應用程序要檢查,如果用戶當前已登錄,它具有比其它任何功能。
的註銷功能(應用端)
$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.logout()之後不使用WL.Client.reloadApp?原因有兩個:
- 白屏和重新加載整個應用程序只是骯髒的,它根本不是用戶友好的。
- WL.Client.reloadApp在Android Lollipop(Android 5.0)上給出致命信號11(代碼1)。至少,這是我的工作燈版本(6.2.0.01)。
請,有沒有方法可以讓我避免WL.Client.reloadApp,仍然註銷來自服務器的用戶?如果不是:什麼可能會導致Android Lollipop中的致命信號11(代碼1)錯誤?我已經在iOS 8.0,Android 2.3.5,Android 4.4.2和Android 5.0上進行了徹底測試。只有一個失敗是5.0
謝謝你,對不起,長期職位
嗨。儘管我沒有爲您解決問題,但我確實想讓您知道,WL.Client.reloadApp在Android 5.0中不起作用的錯誤正在調查中。感謝您的報告。 – 2014-11-04 07:18:56
我已經找到了我的應用程序的解決方法,這涉及到根本不必使用WL.Client.reloadApp()。我也測試了WL.Client.reloadApp沒有任何別的..我的意思是:沒有AngularJS,沒有離子,沒有任何。只有純CSS的HTML和JavaScript。它仍然只在android 5.0 – ErikBrandsma 2014-11-05 10:14:39
崩潰謝謝。您能否將您的解決方案作爲其他人從中受益的答案? – 2014-11-05 10:20:05