3

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

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

例如,如果我要创建一个登录文件夹,在该文件夹下有 svelte 组件和服务器端路由。是否会有一个设置 session.user 的帖子“端点”?

4

2 回答 2

4

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

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

于 2019-11-02T04:43:25.663 回答
4

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

要么从第三方(谷歌、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到您对服务器的请求中。

您必须在每个请求上验证令牌,但这种方法使您的应用程序具有超强的可扩展性

于 2020-05-23T18:35:16.670 回答