Рули и токен JWT на локальное хранилище

Я использую экспресс-руль и токены jwt для маршрута входа в систему. Я пытаюсь сохранить токен в локальном хранилище при попадании маршрута входа в мой API. Проблема в том, что когда я устанавливаю токен во внешнем интерфейсе, он создает ошибку из-за его формата. Мой код приведен ниже, и если у кого-то есть исправления или идеи, которые будут великолепны. Спасибо! Передняя часть: (в шаблоне руля)

{{#if auth.token}}
<script type="text/javascript" async>
const token = {{auth.token}};
localStorage.setItem("token", token)
</script>
{{/if}}

Бэкенд, сохранение токена и отправка с рендером:

jwt.sign(
              payload,
              keys.JWT_KEY,
              { expiresIn: 3600 },
              (err, token) => {
                auth.token = token;
                auth.status = true;
                res.render("home", { auth: auth });
              }
            );

Ошибка - синтаксическая ошибка: неверный или неожиданный токен.

1 ответ

Причина, по которой это нарушается, заключается в том, что вы пытаетесь установить переменную token в шаблоне руля, равном буквальному токену. Было бы эквивалентно делать что-то вроде:

var token = gmndshhrjvjhsw4bnds221a

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

Это правильный код для того, что вы пытаетесь сделать:

{{#if auth.token}}
  <script type="text/javascript" async>
    const token = '{{auth.token}}';
    localStorage.setItem("token", token)
  </script>
{{/if}}
Другие вопросы по тегам