在 Sapper 应用程序中存储用户会话的位置

Where to store user session in Sapper app

我已经开始将一个应用程序从 React 迁移到 Sapper。我是 SSR 架构的新手,想知道存储用户会话和数据的最佳方式是什么。

我正在使用 Firebase 进行身份验证和数据库。使用客户端 firebase API 获取会话密钥和其他用户数据后,我将如何存储数据?我看过一些制作 user.js 商店的教程,但在 Sapper 文档中我看到它建议使用 session store。那么哪个更好呢?从客户端到服务器端会话存储的流程是什么?

例如如果我要创建一个登录文件夹,在该文件夹下我有 svelte 组件和服务器端路由。是否会有 post "endpoint" 来设置 session.user?

有点棘手。我设法使用身份验证中间件使它与客户端和服务器一起工作

https://github.com/itswadesh/sapper-ecommerce/blob/master/src/server.js

到目前为止我发现的最好方法是使用 JWT:

要么从第三方(Google、facebook、github)获取 JWT,要么自己签名。

server.js:

express()
    .use(
        compression({
            threshold: 0
        }),
        sirv('static', {
            dev
        }),
        cookieParser(),
        bodyParser.json({strict: false}),
        bodyParser.urlencoded({ extended: false }),
        async (req, res, next) => {
            const token = req.cookies['AUTH']
            const profile = token && !dev ? await getBasicUserInfo(token) : false

            return sapper.middleware({
                session: () => {
                    return {
                        authenticated: !!profile,
                        profile
                    }
                }
            })(req, res, next)
        }
    )

然后对于每个请求只需添加 'credentials':'include 到您对服务器的请求。

您必须在每次请求时验证令牌,但此方法可让您的应用超级可扩展