Ibm mobilefirst java.lang.IllegalStateException:无法更改域中已登录用户的标识

Ibm mobilefirst java.lang.IllegalStateException:无法更改域中已登录用户的标识,ibm-mobilefirst,Ibm Mobilefirst,我在登录时遇到以下错误 无法更改域“AdapterAuthRealm”中已登录用户的标识。应用程序必须先注销 FWLSE0101E:原因:java.lang.IllegalStateException:无法更改域“AdapterAuthRealm”中已登录用户的标识。应用程序必须先注销 我的代码如下 Adapter.js function submitAuthentication(username, password){ serversession = storeSession(us

我在登录时遇到以下错误 无法更改域“AdapterAuthRealm”中已登录用户的标识。应用程序必须先注销

FWLSE0101E:原因:java.lang.IllegalStateException:无法更改域“AdapterAuthRealm”中已登录用户的标识。应用程序必须先注销

我的代码如下

Adapter.js

 function submitAuthentication(username, password){ 
    serversession = storeSession(username); 
    if (username!=""){

        var userIdentity = {
                userId: username,
                displayName: username, 
                attributes: {
                    foo: "bar"
                }
        };

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

        return { 
            authRequired: false 
        };
    }

    return onAuthRequired(null, "Invalid login credentials");
 }

function onLogout(){    
    WL.Server.setActiveUser("AdapterAuthRealm", null);
    WL.Logger.debug("Logged out");  
 }
客户端

注销('AdapterAuthRealm',{onSuccess:WL.Client.reloadApp})

之前:
WL.Server.setActiveUser(“AdapterAuthRealm”,userIdentity)

加:
WL.Server.setActiveUser(“AdapterAuthRealm”,null)

这将确保您在登录用户之前有一个干净的记录

最终结果是:

function submitAuthentication(username, password) {
  serversession = storeSession(username);
  if (username !== "") {

    var userIdentity = {
      userId: username,
      displayName: username,
      attributes: {
        foo: "bar"
      }
    };

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

    return {
      authRequired: false
    };
  }

  return onAuthRequired(null, "Invalid login credentials");
}

我已经尝试过这个解决方案。结果导致应用程序进入无限循环。无论我们在哪里导航,它都会被重定向到主页,那么我认为您的应用程序中还有其他问题。可能在您的挑战处理程序或应用程序逻辑中。