Sveltekit 新创建的 cookie 未显示在钩子的句柄函数中

2024-02-15

Summary

Once 设置cookie标头在响应中发送,在 cookie 可见之前需要另一个请求handle()函数在hooks.ts file.

Example

  1. 用户将用户名和密码发布到登录端点;
  2. Enpoint 用 set 响应访问令牌cookie 头;
  3. 应将用户重定向到受保护的页面。 (FAILS)

它失败是因为 authguard 检查 cookie 是否存在,但此时从代码端看不到它,只能在浏览器端看到。

  1. 刷新页面

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

最低限度的繁殖 https://github.com/rudgalvis/MR-svelte-cookie

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


正如评论中提到的,您的服务器返回 HTTP 状态代码 200,该状态代码在登录后不会重定向客户端。由于状态代码,浏览器假设它已经到达最终目的地。

在这种情况下,最佳实践是使用状态代码 302:

修改/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`
        }
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sveltekit 新创建的 cookie 未显示在钩子的句柄函数中 的相关文章

  • 如何绑定使用 Svelte let 指令声明的变量?

    我正在尝试解决 无法绑定到使用 let 指令声明的变量 错误 FancyList svelte ul each items as item i li li ul
  • CookieManager.getInstance().removeAllCookie();不删除所有cookie

    我在应用程序的 onCreate 中调用 CookieManager getInstance removeAllCookie 我遇到了一个奇怪的问题 我看到 GET 请求中传递了意外的 cookie 值 事实上 cookie 值是一个非常非
  • svelte + rollup 中的环境变量

    我正在寻找一种简单的方法来设置环境 IE 如果我能跑步就好了npm run dev local and npm run dev staging加载不同的环境文件 这些文件可以在运行时通过process env 据了解 它是编译的 因此我可能
  • OpenIdConnect.nonce cookie 过多导致错误页面“错误请求 - 请求太长”

    我正在使用 OWIN OAuth 和 OpenId Connect 身份验证 Microsoft Owin Security OpenIdConnect 在 C ASP MVC Web 应用程序中 使用 Microsoft 帐户的 SSO
  • Internet Explorer 11 不会在网站上设置 cookie

    由于某种原因 IE11 仅限 IE11 与其他 IE9 和 IE10 一起测试 不会在我一直在处理的网站上创建会话 因此 这意味着网站登录等基本功能将无法使用 在其他浏览器上 这工作得很好 我研究了一下 发现 IE 不能与带下划线的域一起使
  • 将自己编写的 TypeScript 模块导入 Svelte 组件时出现错误

    我正在尝试将自己编写的 TypeScript 模块导入到 Svelte 组件中 但是 当我尝试使用以下行导入模块时 我收到以下错误 import TelegramBotForSafetyMania from telegram bot 我们收
  • 替换javascript中字符串中的多个字符

    我得到了这段不错的代码 但我不知道为什么不起作用 出于兼容性目的 它应该获取文本输入的值并用 HTML 代码替换每个给定的国家字符 但是 当我单击按钮时 该函数返回字符串而不进行任何更改 任何想法 jsfiddle http jsfiddl
  • 同一域上的多个 Django 站点 - CSRF 失败

    我有两个应用程序在同一域的不同端口上运行 都使用 csrf 中间件 当我登录其中一个应用程序时POST从另一个提交失败 我推测是因为SESSION COOKIE DOMAIN是一样的 我尝试改变SESSION COOKIE NAME 但是
  • websockets 如何处理同一浏览器的两个选项卡

    I have 1 个 PHP 服务器 提供 http 请求 和 1 node js 发布更新的数据消息 每个连接都带有 websocket php 服务器设置其 cookie 在一个浏览器中 此 cookie 可在所有选项卡中使用 当浏览器
  • 如何在 Jersey RESTful Web 服务中放置 cookie?

    我想通过 Jersey API 将 cookie 从 PUT webservice result 放置到 POST webservice 这是我的代码 WebResource service1 client resource http te
  • python - 将cookie添加到cookiejar

    如何在 python 中创建 cookie 并将其添加到 CookieJar 实例 我拥有 cookie 的所有信息 名称 值 域 路径等 但我不想通过 http 请求提取新的 cookie 我尝试了这个 但看起来 SimpleCookie
  • Cookie 在 ASP.net 中失去价值

    我有以下设置 cookie 的代码 string locale DropDownList this LoginUser FindControl locale SelectedValue HttpCookie cookie new HttpC
  • asp.net cookie、身份验证和会话超时

    我有一个使用表单身份验证的 asp net 网站 我在会话中保留一些信息 例如用户名 用户 ID 电子邮件等 我通过在身份验证 cookie 上设置较长的到期日期来允许用户保持登录网站的状态 因此 当用户仍处于身份验证状态时 会话过期的情况
  • 为什么 httpRuntime targetFramework="4.5" 禁止抓取 .ASPXAUTH cookie?

    当我的 web config 具有以下 httpRuntime 时 我的控制器无法获取 cookie ASPXAUTH 它似乎能够获取任何其他 cookie 无论带或不带句点前缀 如果我删除下面的行 它就可以正常工作
  • 是否可以阻止在每个 HTTP 请求中发送 cookie?

    我最近发现 这里 每个网络请求都会发送浏览器cookie吗 https stackoverflow com questions 1336126 does every web request send the browser cookies
  • 如何提取Firefox会话cookie(Python语言首选)

    我正在尝试从数据库 cookies sqlite 中提取 FF cookie 然而 似乎只能在那里找到具有过期日期的cookie 我正在搜索会话结束时过期的cookie 我什至打开了FF的 记住打开的标签 功能 我不明白 它们之间的根本区别
  • 从浏览器中删除cookie?

    有什么方法可以指示网络浏览器完全delete一个人的cookie是用PHP设置的吗 我不想expiry或者等待浏览器closed 对于删除 我的意思是实际上不再将其列在 cookie 列表中 尝试这样删除所有 cookie foreach
  • XmlHttpRequest CORS POST 发送时不带 cookie

    我有一个 Rails 服务为我的 AngularJS 前端应用程序返回数据 该服务配置为通过返回足够的标头来允许 CORS 请求 当我发出 GET 请求来接收数据时 会发送 CORS 标头 以及我之前在登录时收到的会话 cookie 您可以
  • Rails 渲染 JSON - 会话丢失?

    我正在尝试对控制器进行一些 Ajax 调用 该控制器以 JSON 进行响应 if session user render json gt Some Data else render json gt You are not logged in
  • setcookie with expire=0 浏览器关闭后不会过期

    我使用setcookie来制作一个过期 0的cookie 从 PHP 文档来看 link http php net manual en function setcookie php cookie 过期的时间 这是一个 Unix 时间戳 所以

随机推荐