我想为我的django webapp使用firebase身份验证。为了达到这个目的,我想我需要编写一个自定义的auth后端 - 是吗?我没有看到任何已经执行此操作的库 - django-allauth看起来非常接近,但我对firebase提供的电话号码验证感兴趣。
我也对User模型和request.user或user.is_authenticated等函数会发生什么感到困惑。现在我使用身份验证和登录功能 - django如何知道用户是通过firebase登录的?我还会为每个用户创建一个用户模型吗?
由于
答案 0 :(得分:7)
您可以在任何框架中使用Firebase Auth。您不一定需要使用自定义身份验证。通常,您将在客户端上登录用户,通过调用firebase.auth().currentUser.getIdToken()
获取ID令牌,然后将ID令牌传递给您的服务器,验证它并解析其有效负载,以识别用户ID及其他声明,方法是使用Firebase Admin SDK然后您可以发出会话cookie,以识别与该ID令牌关联的用户。
在注销时,您将清除该会话cookie。
如果您还需要在设置会话Cookie后在后端保留该用户,您还可以使用Firebase管理SDK查找由用户ID标识的用户,或者只使用令牌声明来填充用户而无需任何网络呼叫。如果需要,您可以在关联框架的用户模型中填充它。
有关会话管理的更多信息,请参阅此django文档:https://docs.djangoproject.com/en/2.0/topics/http/sessions/