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?


person Ken Vernaillen    schedule 21.11.2013    source источник


Ответы (2)


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

person Anton    schedule 21.11.2013
comment
Когда я пытаюсь это сделать, мое приложение входит в бесконечный цикл попыток аутентификации. Любая идея, почему я увижу такое поведение? - person Opossum; 07.01.2014
comment
Я тоже вижу бесконечный цикл. - person richardsun; 28.05.2014

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

WL.Client.isUserAuthenticated("KlapprAuthRealm")

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

person Sam Nunnally    schedule 21.11.2013