HttpOnly cookie 未随请求一起发送

问题描述 投票:0回答:0

我正在尝试在我的 SPA 中实现刷新令牌流,刷新令牌将存在于 httpOnly 安全 cookie 中,因为我仍在本地开发,安全标志目前设置为 false。当访问令牌不再有效时,我正在使用 axios 调用 refreshToken 端点,因此当我从 api 获得未经授权的响应时。问题是我的 refreshToken 端点需要一个

refresh_token
的 cookie,但没有随请求发送任何 cookie。如果我将 httpOnly 标志设置为 false,cookie 将随请求一起发送,没问题。

我如何设置我的饼干:

  const handleLogin = (
    params: LoginParams,
    errorCallback?: ErrCallbackType
  ) => {
    axios
      .post(authConfig.loginEndpoint, params)
      .then(async (res) => {
        // Set the access token in memory
        setAccessToken(res.data.access_token);
        setCookie("refresh_token", res.data.refresh_token, {
          maxAge: 30 * 24 * 60 * 60,
          httpOnly: true,
          secure: process.env.NEXT_PUBLIC_STAGE === "production",
          path: "/",
        });
        const returnUrl = router.query.returnUrl;
        const redirectURL = returnUrl && returnUrl !== "/" ? returnUrl : "/";
        await router.replace(redirectURL as string);
      })
      .catch((err) => {
        if (errorCallback) errorCallback(err);
      });
  };

我如何使用 axios 调用 refreshToken 端点:

    axios
      .post(authConfig.refreshTokenEndpoint, null, { withCredentials: true })
      .then((res) => {
        if (res.data.error) {
          console.log(res.data.error);
        } else {
          console.log("We got a new refresh token token");
        }
      });
reactjs authentication oauth refresh-token
© www.soinside.com 2019 - 2024. All rights reserved.