首页 > 解决方案 > 在服务功能中访问会话存储

问题描述

我尝试创建纯函数或至少一些服务类,以使用类型化方法访问后端 API。对于身份验证,我使用 cookie。

对于客户端请求,cookie 身份验证可以即时进行,但对于 ssr,我必须在使用fetch.

我已经在会话中拥有所需的令牌,但是如果我尝试通过import { session } from '$app/stores';组件外部访问会话,我得到了 Function called outside component initialization.

一种选择是在每个 SSR api 函数上添加手动调用 cookie 标头作为参数,但这不会是一种干净的方式。

是否有人知道如何在组件外部访问会话,或者是否有任何可能的方法来定义包含访问存储(包括会话存储)的服务类,哪些功能可跨组件使用?

我想使用类似的东西:

export async function load({ page, fetch, session, context }) {
    let me = (await service.getLoggedInUser())?.username ?? "not logged in";
    // or:
    me = (await getLoggedInUser())?.username ?? "not logged in";
    // ...
}

代替:

export async function load({ page, fetch, session, context }) {
    let me = (await service.getLoggedInUser(session))?.username ?? "not logged in";
    // or:
    me = (await getLoggedInUser(session)())?.username ?? "not logged in";
    // ...
}

如果有人可以提供继续的提示,那就太好了。

先感谢您。

斋月

标签: authenticationsveltesvelte-storesveltekit

解决方案


推荐阅读