我已经开始将一个应用程序从React移动到Sapper。我是SSR架构的新手,想知道存储用户会话和数据的最佳方式是什么。
我正在使用Firebase进行身份验证和数据库。在使用客户端firebase API获取会话密钥和其他用户数据后,我将如何存储数据?我看过一些制作user.js存储的教程,但在Sapper文档中,我看到它建议使用会话存储。那么,哪一个更好呢?从客户端到服务器端会话存储的流程是什么?
例如,如果我要创建一个登录文件夹,在该文件夹下我有svelte组件和服务器端路由。会有一个post"endpoint"来设置session.user吗?
这有点棘手。我使用身份验证中间件成功地在客户端和服务器上实现了这一点
https://github.com/itswadesh/sapper-ecommerce/blob/master/src/server.js
到目前为止,我发现的最好的方法是使用JWT:
要么从第三方(谷歌、脸书、github(获得JWT,要么签署自己的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)
}
)
那么对于每个请求,只需将CCD_ 1添加到您对服务器的请求中。
你必须在每次请求时验证令牌,但这种方法使你的应用程序具有超级可扩展性