我有一个 Django 服务器,其用户数据库存储在 MySQL 中。我正在使用 Django Rest Framework 和 Django Allauth 进行用户身份验证。
我想构建另一个应用程序来存储用户问题。这些问题的数据应存储在 Supabase 中。我想使用 Django 服务器对用户进行身份验证,并且只有具有所需授权的经过身份验证的用户才应该能够在其他应用程序中提问。
这就是我想要实现的目标:
用户通过 Django 服务器登录(使用 Django Allauth)。 经过身份验证后,用户可以在其他应用程序中提问。 问题实时存储在 Supabase 中。 只有具有所需授权的经过身份验证的用户才能提出问题。 我不知道如何将 Django 与 Supabase 集成。我还想确保身份验证和授权过程安全高效。
我已经检查了supabase的文档,但除了我注意到的社交身份验证之外,我没有找到任何有关第三方身份验证的信息,也许我错过了一些东西。
任何有关如何实现这一目标的指导或资源将不胜感激。预先感谢!
P.S:我想利用supabase的实时功能以及将来可能的其他功能。
我无法给你一步一步的指导,但我可以为你指明正确的方向。
听起来你可以在 Django 中构建整个东西,而无需单独的应用程序,我推荐这样做。如果您已经拥有单独的应用程序,您可以尝试使用 JSON Web 令牌进行跨应用程序身份验证。已经有一个适用于它们的 Django 插件简单的 JWT,但请记住,JWT 有一些安全隐患需要牢记。
如果您使用 Django 作为应用程序,则不需要使用 supabase 的任何身份验证功能。 Django 状态也或多或少只是服务器端的,这消除了在supabase 端控制对supabase 数据的访问的需要,因为您可以使用Django 的授权框架。 @login_required 和 @permission_required 装饰器/混合允许您控制对服务器端视图/数据的访问。您还可以直接访问用户对象并获取用于唯一用户标识符的任何内容。这将允许您将每个 SUPABASE 对象与特定用户关联(如果您需要的话)。有关更多详细信息,您可以查看 Django 文档:
https://docs.djangoproject.com/en/5.0/topics/auth/default/
我将其设置为 Django 应用程序的方法是简单地将 Supabase 作为第二个数据库添加到您的 Django 项目中,并将其视为通用数据存储,而无需担心第三方身份验证。只需让 Django 处理权限并将正确的数据路由到正确的用户即可。
有关 Django/Supabase 集成的信息,请参阅:
https://www.restack.io/docs/supabase-knowledge-supabase-django-integration
https://bjoern-holste.medium.com/django-hearts-supabase-8b251f77d206
如果您想要实时功能,您可以考虑将 HTMX 集成到您的应用程序中,我发现它与 Django 配合得很好。 HTMX 将有助于保持数据最新并自动刷新页面元素。