【问题标题】:User session between Express+Nodejs and clients using FirebaseExpress+Nodejs 与使用 Firebase 的客户端之间的用户会话
【发布时间】:2021-10-13 07:44:36
【问题描述】:

使用 Nodejs+Express 和 Firebase 身份验证存储用户会话的常用方法是什么?我有 Android 和 Ios 应用程序,我想在(后来的网络)上使用相同的逻辑,所以我会得到 JWT 令牌。我想使用该令牌作为请求的授权。另外我想保留用户 sessio 并且不要求他们再次重新登录。我不知道该怎么做,我发现的所有 Express Session 资源都是关于 web 和 cookie 的。我偶然发现了upon MongoConnection a library for Express,它大概将会话存储在 MongoDb 中,但是会话如何处理非 W​​eb 请求?谁能帮我澄清一下,我知道我在这里忽略了这一点,因为肯定有一种简单的方法可以验证传入的请求,并且还有一个会话让用户不必每次都登录。

最好我想有一种简单的方法来拥有需要 JWT 令牌访问的端点。除此之外还有各种各样的会议。在 Nodejs 的 Firebase Admin SDK 中有一个验证令牌的功能,但在每个请求中必须手动检查令牌似乎真的很奇怪。

【问题讨论】:

    标签: node.js firebase express session firebase-authentication


    【解决方案1】:

    我完全分开处理后端和前端的会话,因为我主要制作 RESTful api。在前端,您可以随心所欲地处理会话,例如您可以在用户使用 firebase auth 进行身份验证时启动会话,并可能基于 firebase auth 用户的属性设置用户角色。使用 cookie,随心所欲。

    然后在后端,每个端点只需解码令牌,验证它,检查用户是否可以访问他们请求的资源等。编写自己的中间件是很常见的,这样你就不必重复解码代码.有关此方法的更多信息,this 可能会有所帮助。在每个请求上手动检查令牌并不奇怪,这是保证请求真实性的常见做法。希望这对您有所帮助。

    总而言之,将前端会话与后端完全分开。在后端的快速服务器上,在任何受保护的端点上解码并验证令牌以确定用户是否有权访问资源。

    使用 firebase 的后端会话是个坏主意(因为它是无服务器的),最好创建一个无状态的 restful api。

    【讨论】:

    • 所以基本上保持登录应该在前端处理,然后在后端我必须编写自己的中间件来验证请求(或者每次都手动执行)?我没有 firebase 无服务器后端,而是托管 nodejs 服务器
    • 就是这样。啊,明白了,我仍然建议不要在后端进行会话并使其个人无状态。
    猜你喜欢
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2015-06-18
    • 2018-09-30
    相关资源
    最近更新 更多