Authentication Worklight LDAP身份验证从LDAPRealm注销

Authentication Worklight LDAP身份验证从LDAPRealm注销,authentication,ibm-mobilefirst,worklight-adapters,worklight-server,worklight-security,Authentication,Ibm Mobilefirst,Worklight Adapters,Worklight Server,Worklight Security,我正在尝试使用IBM Worklight Studio 6.2.0.01创建LDAP身份验证系统 登录系统工作正常,这一部分没有问题,但是注销功能实际上不会注销用户 领域: <realm loginModule="LDAPLoginModule" name="LDAPRealm"> <className>com.worklight.core.auth.ext.FormBasedAuthenticator</className> </realm&g

我正在尝试使用IBM Worklight Studio 6.2.0.01创建LDAP身份验证系统

登录系统工作正常,这一部分没有问题,但是注销功能实际上不会注销用户

领域:

<realm loginModule="LDAPLoginModule" name="LDAPRealm">
    <className>com.worklight.core.auth.ext.FormBasedAuthenticator</className>
</realm>
每次应用程序想要检查用户当前是否登录时,都会调用getUsername函数,除此之外,它没有其他功能。

注销功能(应用程序端)

结果:这会使应用程序通过注意到用户已注销而转到登录页面,唯一的问题是。。它尚未完全注销用户。我该怎么做才能让用户完全注销

PS:为什么不在WL.Client.logout()之后使用WL.Client.reloadApp?原因有二:

  • 白色屏幕和重新加载整个应用程序是肮脏的,它根本不是用户友好的
  • 在安卓棒棒糖(安卓5.0)上,WL.Client.reloadApp发出致命信号11(代码1)。至少在我的worklight版本(6.2.0.01)中是这样
  • ,有什么方法可以避免WL.Client.reloadApp并仍然从服务器注销用户?如果不是:什么可能导致Android棒棒糖中的致命信号11(代码1)错误?我已经在iOS 8.0、安卓2.3.5、安卓4.4.2和安卓5.0上对其进行了全面测试。唯一失败的是5.0


    感谢您,并为这篇长篇大论感到抱歉

    我已通过在成功注销时删除WL.Client.reloadApp功能解决了此问题,我这样做:

    $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 :)
            }});
    }
    
    $scope.logout=function(){
    logout(“LDAPRealm”,{onSuccess:function(){
    
    $scope.setUsername()//您好。虽然我没有为您提供解决方案,但我确实想让您知道,正在调查WL.Client.reloadApp在Android 5.0中不起作用的错误。感谢您的报告。我已经为我的应用程序找到了解决方法,这涉及到不必使用WL.Client.reloadApp()我也测试了WL.Client.reloadApp,没有其他任何东西。我的意思是:没有AngularJS,没有Ionic,没有任何东西。只有纯html css和javascript。它仍然只在android 5.0Thanks上崩溃。你能把你的解决方案写下来作为答案,让其他人从中受益吗?当然,刚刚发布了itEdit:即使WL.Client.reloadApp可以工作,我也不会uld仍然更喜欢这个,因为这个解决方案不会给用户一个闪烁的屏幕。这更方便用户
    <customSecurityTest name="LDAPSecurityTest">
        <test realm="wl_directUpdateRealm" step="1"/>
        <test isInternalUserID="true" realm="LDAPRealm"/>
    </customSecurityTest>
    
    <procedure name="getUsername"  securityTest="LDAPSecurityTest" />
    <procedure name="onLogout" />
    
    function getUsername(){
        return {username: ""};
    }
    
    function onLogout(){
        WL.Server.setActiveUser("LDAPRealm", null);
    }
    
    $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});
    }
    
    $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 :)
            }});
    }