Django-Rest框架的Firebase令牌认证

drf-firebase-token-auth的Python项目详细描述


灵感来自garyburgmann/drf-firebase-auth 基于Rest Framework’s TokenAuthenticationdrf-firebase-token-auth应该正是启用客户端所需的 使用Firebase Authentication进行身份验证。在

它是如何工作的

  1. 对于每个REST请求,将从 授权标头。在
  2. 根据Firebase验证ID令牌。在
  3. 如果已经知道Firebase用户(具有相应UID的记录 存在于FirebaseUser表中),则对应的本地用户为 已成功验证。在
  4. 否则,将尝试匹配不熟悉的Firebase用户 本地用户通过电子邮件用户名记录。如果不存在匹配项, 然后创建一个新的用户。其用户名分配给 Firebase电子邮件或UID(如果电子邮件不可用)。 最后,成功地验证了新创建的本地用户。在

安装

  1. 安装pip包:

    $ pip install drf-firebase-token-auth
    
  2. 将应用程序添加到项目的INSTALLED_APPS

    ^{pr2}$ 在
  3. FirebaseTokenAuthentication添加到Rest框架的默认列表中 身份验证类:

    # settings.pyREST_FRAMEWORK={...'DEFAULT_AUTHENTICATION_CLASSES':[...'drf_firebase_token_auth.authentication.FirebaseTokenAuthentication',]}

    Note:保留其他身份验证类也很好。 例如,您可能希望保留rest_framework.authentication.SessionAuthentication 允许本地用户使用密码访问可浏览的API。在

  4. 配置应用程序:

    # settings.pyDRF_FIREBASE_TOKEN_AUTH={# REQUIRED SETTINGS:# Path to JSON file with firebase secrets'FIREBASE_SERVICE_ACCOUNT_KEY_FILE_PATH':r'/mnt/c/Users/ronhe/Google Drive/ProgramsData/WizWot/paywiz-c4b4f-firebase-adminsdk-ekbjf-9b7776879a.json',# OPTIONAL SETTINGS:# Create new matching local user in db, if no match found.# Otherwise, Firebase user not matching a local user will not# be authenticated.'SHOULD_CREATE_LOCAL_USER':True,# Authentication header token keyword (usually 'Token', 'JWT' or 'Bearer')'AUTH_HEADER_TOKEN_KEYWORD':'Token',# Verify that Firebase token has not been revoked.'VERIFY_FIREBASE_TOKEN_NOT_REVOKED':True,# Require that Firebase user email_verified is True.# If set to True, non verified email addresses from Firebase are ignored.'IGNORE_FIREBASE_UNVERIFIED_EMAIL':True,}
  5. 迁移:

    $ python manage.py migrate drf-firebase-token-auth
    
  6. 让您的客户在 REST请求的授权头。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
netbeans根据命名约定返回布尔类的getter的Java名称   java如何在MessageFormat中使用单引号   java如何在整数数组中只对奇数排序,而将偶数保留在其原始位置?   自定义ArrayAdapter中未定义java构造函数   java joda时间格式化程序解析yyyyymmdd(额外一小时)   java Spring引导控制器测试始终返回404   java如何提取类文件以获取该类文件中的类?   JTable java列不会显示   java Selenium Web驱动程序输出错误的Web表行数   当应用程序在mac上打开时,java SWT选项卡项会从页面上消失   java如何将html文件映射到过滤器   swing Java计算一段时间内两点之间的转换   javawebsphere和javax。xml。ws。spi。提供者:提供者组织。阿帕奇。axis2。jaxws。spi。提供者不是子类型   For循环在Java中没有按预期继续?   java如何配置gson以排除0个整数值   java读取一个由tab分隔的文件,并将单词放入ArrayList中   java我需要做什么才能让LiveConnect重新工作?   sqlservermerge2xml&使用java提取这些数据并将其存储在db表中   java如何在模型中添加新对象时通知网格