Сеансы ASP.Net Core 2.1 API JWT без файлов cookie? - PullRequest
0 голосов
/ 29 августа 2018

Есть ли такая вещь? Можно ли это сделать? Сеансы основаны на токене JWT, а не на файлах cookie? Сессия. Идентификаторы меняются при каждом запросе. Есть ли способ узнать сеанс без куки?

1 Ответ

0 голосов
/ 29 августа 2018

HTTP - это протокол без сохранения состояния. Это означает, что каждый запрос обрабатывается уникально, как если бы клиент никогда не делал запрос раньше. Сессии - это способ подделки государства. Они работают так: когда серверу необходимо поддерживать состояние, он создает сеанс и отправляет идентификатор этого сеанса клиенту через cookie-файл. Файл cookie - это просто заголовок ответа, который указывает, что клиент должен сохранить определенный фрагмент данных и затем отправлять его обратно на сервер при каждом последующем запросе. Затем клиент (веб-браузер) делает следующее: сохраняет куки и отправляет куки обратно с каждым запросом. Сервер получает cookie в заголовках запроса, использует его для поиска сеанса и «восстанавливает» его, создавая видимость состояния.

Важной частью являются данные, то есть идентификатор сеанса, а не обязательно «cookie». В некотором смысле это означает, что вы могли бы потенциально заменить cookie каким-либо другим механизмом, если клиент и сервер все еще передают идентификатор сеанса назад и вперед, все в порядке. Однако куки являются тем механизмом для веб-браузеров. В мире веб-браузеров нет ничего, что автоматически отправляло бы данные обратно на сервер каждый раз, когда пользователь переходит на другую страницу (отправляет запрос). Если бы это был API с общим клиентом, а программист на другом конце решал, как будет отформатирован каждый запрос, вы можете обработать его так, как захотите. И действительно, API по этой причине обычно не используют куки-файлы - обычно есть лучшие способы сделать что-то, чем передавать куки-файлы назад и вперед, когда у вас есть полный контроль над запросом. Это определенно , а не в случае с веб-браузером, поэтому традиционные веб-сайты нуждаются в файлах cookie для поддержания состояния.

JWT на самом деле не имеет значения в этой дискуссии. Это просто способ форматирования данных. Это не замена для куки. Ваши куки могут быть JWT, и во многих современных веб-приложениях они действительно есть, но сервер все равно отправляет заголовок Set-Cookie с этим, и клиент все равно сохраняет его локально и отправляет обратно с Cookie заголовок.

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