Worklight: WL.Server.setActiveUser - Kann nicht geändert werden - Unzulässiger Status: Identität kann nicht geändert werden

Ich versuche, die angemeldete Benutzeridentität zu ändern.

var mydata="this is custom data array";

var user = JSON.parse(JSON.stringify(WL.Server.getActiveUser()));
           WL.Logger.debug("Before Update" + user.attributes);
           WL.Logger.debug(" displayName =" + user.displayName );
           WL.Logger.debug("isUserAuthenticated ="+ user.isUserAuthenticated );
           WL.Logger.debug("userId =" + user.userId );

          WL.Server.setActiveUser ("myAppRealm" ,{    userId: user.userId ,
               displayName: user.displayName,
               isUserAuthenticated: user.isUserAuthenticated,
               attributes: {  userdata: mydata   }
           } );
           WL.Logger.debug(" ---- Updateed user ---- "  );
           var user = JSON.parse(JSON.stringify(WL.Server.getActiveUser())); 

aber es istunter Ausnahme geben.

response [/apps/services/api/myApp/common/query] success: /*-secure-
{"isSuccessful":false,"warnings":[],"errors":["Illegal State: Cannot change identity of an already logged in user in realm 'myAppRealm'. The application must logout first."],"responseID":"67","info":[]}*/ worklight.js:1097
Procedure invocation error. Illegal State: Cannot change identity of an already logged in user in realm 'myAppRealm'. The application must logout first. 

Wie kann ich das ändern?

Bearbeiten:

@Xv. Nun, diesmal musste ich einige Werte im Sitzungsobjekt eines Benutzers speichern. Zu diesem Zweck habe ich zuerst versucht, das Benutzerobjekt wie oben erwähnt zu ändern, aber dann habe ich unten erwähnte APIs gefunden, die beim Abrufen, Ändern oder Hinzufügen von Werten in einem Sitzungsobjekt hilfreich sind.

WL 6.3-Dokumente:

MobileFirst-API für Server> JavaScript-API für Server> Klassen> WL.Server

Zugriff auf ein HttpServletRequest-Objekt.

WL.Server.getClientRequest

Damit haben Sie direkten Zugriff aufHttpServletRequest Objekt und dann können Sie alle seine Methoden verwenden, wie Sie es in JEE-Anwendungen tun würden.

Zum Beispiel:

WL.Server.getClientRequest (). GetSession (). GetAttribute ("mykey") WL.Server.getClientRequest (). GetSession (). SetAttribute ("mykey", myobj)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage