Sveltekit新创建的Cookie没有显示在钩子的句柄函数中 [英] Sveltekit newly created cookie is not showing in the hook's handle function

查看:0
本文介绍了Sveltekit新创建的Cookie没有显示在钩子的句柄函数中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

摘要

在响应中发送Set-Cookie标头后,它将接受另一个请求,然后该Cookie才会在hooks.ts文件的handle()函数中可见。

示例

  1. 用户将用户名和密码发布到登录终结点;
  2. Enpoint使用SETAccess_TokenCookie标头进行响应;
  3. 应将用户重定向到受保护的页面。(失败)

它失败是因为auth Guard检查Cookie是否存在,但此时无法从代码端看到它,只能在浏览器端看到它。

  1. 刷新页面

  2. 用户现在可以重定向到受保护的页面。

Minimal reproduction

它具有虚拟登录/注销功能和受保护的用户配置文件。还有服务器端控制台日志,它显示Cookie滞后于以在挂钩中识别。

http

如评论中所述,您的服务器返回推荐答案状态代码200,该状态代码在登录后不会重定向客户端。由于状态代码,浏览器假定它已到达其最终目标。

在这种情况下,最佳做法是使用状态代码302:Wikipedia

已修改/src/routes/auth/login.ts

import * as cookie from 'cookie';

export const post = (request) => {
    return {
        status: 302,
        headers: {
            location: '/',
            'set-cookie': `${cookie.serialize('token', 'VALUE_OF_THE_COOKIE'}; path=/; HttpOnly`
        }
    }
};

export const del = (request) => {
    return {
        status: 302,
        headers: {
            location: '/',
            'set-cookie': `${cookie.serialize('token', ''}; path=/; HttpOnly; maxAge: 0`
        }
    }
};

这篇关于Sveltekit新创建的Cookie没有显示在钩子的句柄函数中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆