2014-10-13 3 views
2

Я строю серверный сервер RESTful без использования состояния в Java, который будет использоваться интерфейсом AngularJS. Поскольку он должен быть неактивным, я не создаю сеансы, но генерирую токены доступа, а точнее, токены JSON, которые клиент должен предоставлять по каждому запросу.Как аннулировать сеанс пользователя при простоях на сервере без состояния?

Этикетки содержат поле «expires», которое действует как абсолютная дата истечения срока действия. Тем не менее, я хотел бы иметь дополнительное истечение времени бездействия пользователя. Поэтому я бы определил токен доступа как действительный до 24 часов, если пользователь активен один раз каждые 30 минут.

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

+0

Вам нужно некоторое сохранение, чтобы иметь некоторые данные для сравнения по каждому запросу, поэтому вам нужно что-то хранить где-нибудь (например, дБ). Я не знаю, сколько работы будет связано с этим в контексте вашего приложения, но альтернативой является забыть о «недействительной» части и иметь токены с более коротким сроком службы. –

ответ

0

Ну ... чтобы получить REST 100% право много работы большую часть времени. Если он работает из коробки для вас с сессиями вашего сервера, и вам нечего выиграть от 100% -ного безгражданства, сохраните его так.

Если вы действительно должны пойти без гражданства, я не вижу другого способа, кроме как заставить пользователя получить новый токен.

3

Чтобы быть на 100% безгосударственным на стороне сервера, необходимо нажать логику состояния клиента. Решение:

  • вопрос JWT с 2 датой истечения срока действия (один для сеанса - 30 минут, вторых для обновления - 24h)
  • реализовать получение нового маркеров для одного пользователя с предыдущим маркером (новый маркер имеет новое истечение дата для сеанса, но то же самое для обновления)
  • отклоняет запросы, когда какая-либо дата истечения срока действия превышена
  • реализовать «умный» клиент javascript, который может получать новые маркеры, когда пользователь нажимает UI; вы можете его оптимизировать, пропуская запросы обновления, когда токен имеет более 25 минут до даты истечения срока действия
Смежные вопросы