如何在端点中访问 sveltekit 会话?

Pål*_*röm 3 javascript svelte sveltekit

如何访问 sveltekit 端点中的会话?我已经尝试过这个但没有运气:

import { get } from 'svelte/store';    
import { getStores} from "$app/stores";

function getUser() { // <- call this at component initialization
  const { session } = getStores();
 
  return {
    current: () => get(session).user
  }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*aes 9

会话存储正在填充src/hooks.js,正常流程是

  1. 在 中handle,添加一些数据到event.locals.
  2. 在 中getSession,用于event.locals创建会话对象。

此会话对象在客户端中可用作会话存储,并且在 ssr 期间可用(如果您使用这些load函数),但它在端点中不可用。

但端点中可用的是locals变量,该变量最初传递给getSession函数,因此您可以读取该变量。

export async function get({ locals }) {
  // code goes here
}
Run Code Online (Sandbox Code Playgroud)

请注意,这意味着本地会话和客户端会话之间没有同步,如果您向会话添加某些内容,端点将无法使用它。要处理这个问题,您必须向 cookie 添加新数据并在函数中解析它handle