Worklight: WL.Server.setActiveUser - Não é possível modificar - Estado ilegal: não é possível alterar a identidade
Eu estou tentando modificar a identidade do usuário logado,
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()));
mas édando abaixo exceção.
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.
Como posso modificar isso?
Editar:
@Xv. Bem, nessa hora eu tive o requisito de salvar alguns valores no objeto de sessão de um usuário. Para isso, tentei primeiro modificar o objeto do usuário como mencionado acima, mas depois encontrei APIs abaixo mencionadas que ajudam na recuperação, modificação ou adição de valores em um objeto de sessão.
WL 6.3 docs:
API do lado do servidor do MobileFirst> API do lado do servidor JavaScript> Classes> WL.ServerAcessando um objeto HttpServletRequest.
WL.Server.getClientRequestIsso lhe dá acesso direto aHttpServletRequest objeto e, em seguida, você pode usar todos os seus métodos como faria em aplicativos JEE.
Por exemplo:
WL.Server.getClientRequest (). GetSession (). GetAttribute ("mykey") WL.Server.getClientRequest (). GetSession (). SetAttribute ("mykey", myobj)