Управление сессией клиента в веб-приложении при обновлении браузера? - PullRequest
0 голосов
/ 08 сентября 2011

Я работаю над веб-приложением. В этом приложении я использовал GWT2.3.Теперь мой вопрос о сессии на стороне клиента.В клиентской части я поддерживаю сеанс, как показано ниже:

public class WorkFlowSessionFactory {
private static HashMap session;

private WorkFlowSessionFactory() {
}

public static HashMap getClientSessionInstance() {
    if (session == null) {
        session = new HashMap();
    }
    return session;
}

public static Object getValue(WorkFlowSesisonKey key) {
    return getClientSessionInstance().get(key);
}

public static void putValue(WorkFlowSesisonKey key, Object value) {

    getClientSessionInstance().put(key, value);
}
public static void remove(WorkFlowSesisonKey key)
{
    getClientSessionInstance().remove(key);
}

public static void resetSessionUser(User user) {
    session.remove(WorkFlowSesisonKey.LOGGEDIN_USER);
    session.put(WorkFlowSesisonKey.LOGGEDIN_USER, user);
}

}

Теперь, после успешного входа в систему, я включил зарегистрированного пользователя в сеанс клиента, а также в сеанс на стороне сервера, как показано ниже

* 1007.*

Теперь, когда я обновляю браузер, экземпляр сеанса у меня обнуляется. И все переменные сеанса также обнуляются.

Один из способов, которым я занимаюсь при обновлении: сначала я нажимаю на сервере, чтобы получить зарегистрированного пользователя, иснова установите сеанс на стороне клиента, вошедшего в систему пользователя.Поэтому во многих местах на стороне клиента, где требуется вход в систему, он будет работать после обновления браузера.

Но я не уверен, что это правильный способ или нет.Поэтому, пожалуйста, предложите мне этот случай, есть ли хороший способ сделать это?Заранее спасибо

1 Ответ

1 голос
/ 08 сентября 2011

Да, доступ к серверу и запрос, если пользователь вошел в систему, является жизнеспособным решением.Я могу подумать о следующих решениях:

  1. В методе onModuleLoad () получите доступ к серверу и проверьте, вошел ли пользователь в систему, и сохраните ли сеанс в сеансе клиента (как вы его предложили).
  2. Храните сеанс в энергонезависимой памяти (Cookie или HTML5 localalstorage).Однако убедитесь, что вы не храните пароли или конфиденциальные данные.Сохраните хэш или уникальный идентификатор для вашего сеанса.

В любом случае, убедитесь, что вы читаете и понимаете безопасность в приложениях GWT.Вот два хороших источника: Loginsecurity и Безопасность для приложений GWT .
Важное правило - никогда не доверять клиенту. Всегда проверяйте права доступа и учетные данные на сервере .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...