Worklight: WL.Server.setActiveUser - невозможно изменить - недопустимое состояние: невозможно изменить удостоверение
Я пытаюсь изменить имя пользователя, вошедшего в систему,
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()));
но этодавая ниже исключения.
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.
Как я могу изменить это?
Редактировать:
@Xv. Ну, тогда у меня было требование сохранить некоторые значения в пользовательскомсессионный объект. Для этого я сначала попытался изменить пользователя 's объект, как упомянуто выше, но затем я нашел ниже упомянутые API, которые помогают в извлечении, изменении или добавлении значений в объекте сеанса.
WL 6.3 документы:
Серверный API MobileFirst>JavaScript серверный API>Классы>WL.ServerДоступ к объекту HttpServletRequest.
WL.Server.getClientRequestЭто дает вам прямой доступ кHttpServletRequest объект, а затем вы можете использовать все его методы, как в приложениях JEE.
Например:
WL.Server.getClientRequest (). GetSession (). GetAttribute (»мой ключ") WL.Server.getClientRequest (). GetSession (). SetAttribute ("мой ключ", myobj)