typescript 如何在sveltekit中提取cookie

xqnpmsa8  于 2022-12-24  发布在  TypeScript
关注(0)|答案(1)|浏览(141)

我试图提取从后端接收的sveltekit中的cookie的值,但我似乎找不到一种方法来访问svelte中的cookie,我也在使用Typescript,如果可能的话,我不想直接访问DOM。
到目前为止,我已经尝试使用:

  • js-cookie
  • chatGPT回答完全不正确
  • Le互联网自从我在这里问过之后就一直不能用。

set-cookie头显示在网络标签中,它不安全,也不是httponly。请解释我如何从sveltekit typescript访问它的值。
编辑:后端是actix-web
解决:我在actix端将域设置为localhost,并将cookie设置为secure。

bbuxkriu

bbuxkriu1#

我假设当你说 * 后端 * 时,你指的是用SvelteKit编写的后端,因为SvelteKit是一个全栈框架。
在SvelteKit中,您可以通过在服务器加载函数中编写cookie逻辑来实现这一点:

import * as db from '$lib/server/database';
import type { LayoutServerLoad } from './$types';
 
export const load = (async ({ cookies }) => {
  const sessionid = cookies.get('sessionid');
 
  return {
    user: await db.getUser(sessionid)
  };
}) satisfies LayoutServerLoad;

您可以对cookies.set(…)执行相同的操作。

  • 示例摘自文档。
  • 在这里找到完整的Cookie参考。
  • 伟大的article基于cookie的认证。

如果您想从客户端的svelte组件访问Cookie值,可以通过服务器加载函数将其传递到您可以在组件中访问的数据中。

  • +页面.服务器.ts*
import type { PageServerLoad } from './$types';

export const load = (async ({ cookies }) => {
  const tastyCookie = cookies.get('tastyCookie');

  return {
    tastyCookie
  };
}) satisfies PageServerLoad;
  • +页面.苗条 *
<script lang="ts">
  import type { PageData } from './$types';

  export let data: PageData;
</script>

<h1>{data.tastyCookie}</h1>

我认为您还应该能够从客户机svelte页面上的onMount钩子内部访问cookie字符串,但我强烈建议使用上面显示的方法,因为这是Kit的工作方式。

相关问题