Для вопроса № 1 выигрыш не на стороне клиента.Если вы не можете доверять тому, что получили от сервера, вы не можете доверять этому, независимо от того, как оно запутано / закодировано / зашифровано /.Дело в том, что вы отправляете этот токен обратно на сервер.На сервере быстрая проверка покажет, что этот токен является допустимым.Представьте себе сложный сценарий входа в систему, где MegaCorp просматривает разрешения для пользователя в подсистемах 739, объединяет их в одну полезную нагрузку, и затем не нужно делать это снова при последующих запросах.Когда клиент отправляет токен обратно, он проверяет, что вы правильно вошли в систему, и использует разрешения для дальнейшей обработки.
Для # 2 вы можете поместить все, что вам нравится, в эту полезную нагрузку, если это не так.не должно быть слишком безопасным.Я в основном использую его для базовой пользовательской информации и для разрешений приложений.Поэтому я могу нарисовать имя пользователя и предложить ссылку на страницу настроек конкретного пользователя.Я могу проверить, есть ли у пользователя доступ к административной странице или какие разрешения мне нужно проверить.В то время как злонамеренный пользователь может обмануть систему, манипулируя этими данными на стороне клиента, и, следовательно, может, скажем, увидеть страницу администратора, когда вызов возвращается к серверу, чтобы получить данные для этой страницы, токен является нелегитимным изапрос будет отклонен или не будет содержать надлежащих разрешений, и, опять же, он будет отклонен.
Я не знаю достаточно о безопасности, чтобы попытаться ответить на # 3.
Некоторые люди используют JWT только для isLoggedIn
, что хорошо, но я думаю, что упускает некоторые полезные возможности.При правильном использовании это может быть единый механизм сбора пользовательской информации как для клиента, так и для сервера.Но важной стороной, на мой взгляд, является сервер.Это может быть сделано разными способами на клиенте.Но сложно найти что-то лучшее для сервера.