如何访问端点中的 sveltekit 会话?
How to access sveltekit session in endpoint?
如何在 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
}
}
会话存储仅在 svelte 组件内部工作,(它在后台使用上下文)这提供了用户之间的隔离。
您可以从 src/hooks.js 导入 getSession 并传递事件以重用从请求中提取会话数据的逻辑。
正在 src/hooks.js
中填充会话存储,这样做的正常流程是
- 在
handle
中,添加一些数据到event.locals
。
- 在
getSession
中,使用event.locals
创建会话对象。
此会话对象在客户端中作为会话存储可用,如果您使用 load
函数,则在 ssr 期间可用,但在端点中不可用.
虽然端点中可用的是 locals
变量,它最初传递给 getSession
函数,因此您可以读取那个。
export async function get({ locals }) {
// code goes here
}
请注意,这意味着本地和客户端会话之间没有同步,如果您向会话添加一些内容,端点将无法使用它。例如,要处理此问题,您必须向 cookie 添加新数据并在 handle
函数中对其进行解析。
如何在 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
}
}
会话存储仅在 svelte 组件内部工作,(它在后台使用上下文)这提供了用户之间的隔离。
您可以从 src/hooks.js 导入 getSession 并传递事件以重用从请求中提取会话数据的逻辑。
正在 src/hooks.js
中填充会话存储,这样做的正常流程是
- 在
handle
中,添加一些数据到event.locals
。 - 在
getSession
中,使用event.locals
创建会话对象。
此会话对象在客户端中作为会话存储可用,如果您使用 load
函数,则在 ssr 期间可用,但在端点中不可用.
虽然端点中可用的是 locals
变量,它最初传递给 getSession
函数,因此您可以读取那个。
export async function get({ locals }) {
// code goes here
}
请注意,这意味着本地和客户端会话之间没有同步,如果您向会话添加一些内容,端点将无法使用它。例如,要处理此问题,您必须向 cookie 添加新数据并在 handle
函数中对其进行解析。