1

Я получаю следующее сообщение об ошибке при первом входе в систему на моем экране входа в систему.Worklight - Как проверить, был ли клиент уже зарегистрирован, а затем передать экран входа в систему

[ERROR ] FWLSE0099E: An error occurred while invoking procedure [project Klappr]KlapprAuthAdapter/submitAuthenticationFWLSE0100E: parameters: [project Klappr]{ 
     "arr": [ 
    "dGVzdDp0ZXN0" 
    ] 
    } 
    Cannot change identity of an already logged in user in realm 'KlapprAuthRealm'. The application must logout first. 
    FWLSE0101E: Caused by: [project Klappr]null 
                              com.worklight.common.log.filters.ErrorFilter 

В submitauthentication (адаптер) проверить, если имя пользователя и пароль правильно, и если они правильны я поставил activeUser в WorklightRealm так:

WL.Server.setActiveUser("KlapprAuthRealm",{ 
         userId:""+teacher.id, 
         displayName: teacher.voornaam, 
         credentials:loginstring, 
         attributes: { 
          "teacherId": teacher.id, 
         } 
        }); 

Как я могу проверить, если пользователь уже вошел в систему? Это лучше всего на стороне клиента, прежде чем я покажу страницу входа? Или я должен позволить им иметь возможность войти в другое время, и если они уже вошли в систему, также верните userId?

ответ

0

Это происходит потому, что вы пытаетесь установить активного пользователя, но он уже установлен. Возможным решением может быть вызов WL.Server.setActiveUser («KlapprAuthRealm», null) перед установкой активного пользователя с фактическим идентификатором пользователя.

+2

Когда я пытаюсь это приводит к тому, что мое приложение вводит бесконечный цикл попыток аутентификации. Любая идея, почему я буду видеть это поведение? – Opossum

+0

Я вижу бесконечный цикл. – richardsun

0

Если вы хотите проверить на стороне клиента для перед подачей:

WL.Client.isUserAuthenticated("KlapprAuthRealm") 

Может хочет читать документы на WL.Client.createChallengeHandler обрабатывать сессию и Войти поток