我有一个服务器端渲染的应用程序,它也可以与Firebase通信。当用户登录时,客户端会从firebase获取ID令牌,然后按照文档中的说明与服务器共享该令牌。我的服务器将ID令牌存储在cookie中,以便客户端将令牌包含在所有请求中,并且我的服务器可以检查用户是否已登录。
问题是,当Firebase在一个小时后刷新令牌时,我的服务器无法验证令牌ID,并将其重定向到登录页面。然后,客户端加载并从Firebase获取刷新的令牌,并将其存储在服务器Cookie中,然后我的服务器会再次正确验证请求。
我可以使客户端在每个请求上刷新令牌,但是当用户离开我的网站并在一小时后返回时,仍然会出现问题。
我如何设置我的应用程序,以便Firebase令牌过期后我的服务器可以正确验证用户身份?
因此,您需要在令牌过期之前(每个小时)主动刷新令牌。刷新令牌后,您可以将其发送到服务器,进行验证,并将其设置为与ID令牌具有相同生存期的会话cookie。您也可以从客户端立即将其设置为cookie(如果您不使用仅HTTP的cookie)。
您的服务器将在每个请求中收到此cookie,请在返回受限资源之前对其进行验证。
我认为您已经意识到这一点。如果用户在一个多小时内没有访问您的网站,就会出现此问题。在这种情况下,您的服务器将认为该用户已注销。这是您需要做的:
用户尝试访问/ myCart,该cookie在cookie过期时显示其购物车。您的服务器未检测到Cookie并重定向到临时页面:/ redirect?continue = / myCart在该页面上,您设置了onIdTokenChanged或onAuthStateChanged,一旦它触发了最新的ID令牌,便将其保存为会话Cookie并重定向到/我的车。否则,您将认为用户已注销并重定向到登录页面。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句