У токена должен быть короткий срок жизни, к примеру 60 минут. После того, как токен протухнет у вас есть 2 выбора:
1. Авторизоваться заново по логину паролю и получить новый токен на 60 минут. В этом случае срок жизни токена минимален и можно не заботиться о его краже. Авторизация проходит раз в час, что усложняет кражу пароля, но если его и украдут, то срок жизни токена мизерный.
2. Воспользоваться методом рефреша просроченного токена. При этом такую возможность нужно ограничить временем, к примеру максимум 14 дней после истечения существующего токена.
Возможность выхода из сессии с занесением в черный список текущего еще действующего токена. Он может храниться прямо в кэше и удаляться, когда его время жизни закончится.
Я для себя выбрал первый вариант с возможностью выхода из сессии для особых параноиков. Если текущий токен будет украден, то клиент меняет пароль, а его выданный токен заносится в черный список. Через 60 минут можно считать, что клиента мы защитили. А рефреш я не стал делать, потому что в случае кражи могу не уследить за выданными или обновленными токенами.