Я хочу знать, почему мы вычитаем первые 7 символов токена во время аутентификации, как в:
substr($_SERVER["HTTP_AUTHORIZATION"],7)
См. Этот пример: Лучший тип заголовка HTTP-авторизации для JWT
HTTP-заголовок выглядит так (в одну строку):
Авторизация: Носитель на предъявителе
Таким образом, вам нужно удалить часть «Носитель», которая имеет длину 7 символов плюс один для пробела, но, поскольку в большинстве языков вещи индексируются, начиная с 0, в приведенной выше строке токен начинается с позиции 7.
См. https://jwt.io/introduction/ для более подробного объяснения содержания заголовка.