@luxurypluxury

Почему не отправляется Refresh Token на сервер?

При логине с сервака приходит пара токенов accessToken и refreshToken.
В инспекторе refreshToken корректно отображается в куках, на нём стоит httpOnly.
Но при попытке обновить accessToken, refreshToken с куки не отправляется.
6639c57eb70cf626680728.png

Вот мидлвар аксиоса:
const instance = axios.create({
  baseURL: BASE_URL,
});

instance.interceptors.request.use((config) => {
  config.headers.Authorization = `Bearer ${localStorage.getItem("accessToken")}`;
  return config;
});

instance.interceptors.response.use(
  (response) => {
    return response;
  },
  async (error) => {
    const originalRequest = { ...error.config };
    originalRequest._isRetry = true;

    if (error.response.status === 401 && error.config && !error.config._isRetry) {
      try {
        const response = await instance.get(`${BASE_URL}/user/refresh-token`);
        localStorage.setItem("accessToken", response.data.accessToken);
        return instance.request(originalRequest);
      } catch (error) {
        console.log("Auth error");
      }
    }

    throw error;
  }
);


Сам роут на серваке для рефреша:
export const refreshToken = async (req, res) => {
  try {
    const refreshToken = req.cookies.refreshToken;

    if (!refreshToken) {
      return res.status(401).json({ message: "Refresh Token не найден" });
    }

    const decoded = jwt.verify(refreshToken, process.env.JWT_REFRESH_SECRET);

    const accessToken = jwt.sign({ userId: decoded.userId }, process.env.JWT_SECRET, {
      expiresIn: "30m",
    });

    res.status(200).json({ accessToken });
  } catch (err) {
    res.status(500).json({
      message: "Server error",
      error: err.message,
    });
  }
};
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
@luxurypluxury Автор вопроса
Решил, добавив withCredentials: true

const response = await instance.get(`${BASE_URL}/user/refresh-token`, {
    withCredentials: true,
 });
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AlexanderK-A
@AlexanderK-A
UTC+10
Встречный вопрос, если позволите - из спортивного интереса)

У вас авторизация построена по схеме токены + куки в сессиях?
Мне интересны возможные реализации - опирались на какие-нибудь готовые методики или сами все придумывали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы