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

时间:2016-02-08 05:57:44

标签: ibm-mobilefirst

登录时出现以下错误 无法在领域“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");  
 }

客户端

WL.Client.logout('AdapterAuthRealm',{onSuccess:WL.Client.reloadApp});

1 个答案:

答案 0 :(得分:1)

在: 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");
}