Worklight: WL.Server.setActiveUser - Nie można modyfikować - Niedozwolony stan: Nie można zmienić tożsamości
Próbuję zmodyfikować zalogowaną tożsamość użytkownika,
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()));
ale to jestpodając poniżej wyjątek.
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.
Jak mogę to zmienić?
Edytować:
@Xv. Cóż, w tym czasie musiałem zapisać pewne wartości w obiekcie sesji użytkownika. W tym celu po raz pierwszy próbowałem zmodyfikować obiekt użytkownika, jak wspomniano powyżej, ale potem znalazłem poniżej wymienione API, które pomagają w pobieraniu, modyfikowaniu lub dodawaniu wartości w obiekcie sesji.
Dokumenty WL 6.3:
MobileFirst API po stronie serwera> JavaScript po stronie serwera API> Klasy> WL.ServerDostęp do obiektu HttpServletRequest.
WL.Server.getClientRequestDaje to bezpośredni dostęp doHttpServletRequest obiekt, a następnie możesz użyć wszystkich jego metod, tak jak w aplikacjach JEE.
Na przykład:
WL.Server.getClientRequest (). GetSession (). GetAttribute ("mykey") WL.Server.getClientRequest (). GetSession (). SetAttribute ("mykey", myobj)