使用 dj-rest-auth 将 GitHub 身份验证集成到您的 Django 项目中

本文是关于如何实现 GitHub OAuth 进行安全用户身份验证的简单指南。

在本指南中,我们将能够

  • 使用 GitHub 凭证无缝创建或登录用户
  • 保存用户凭据以供日后使用
  • 先决条件

    为了充分利用本文,用户应该对

  • GitHub
  • Django
  • Django 休息框架
  • 我们将通过 3 个简单步骤来实现这一点

  • 1. 设置 GitHub
  • 2. 设置 Django
  • 3. 测试身份验证端点
  • 1. 设置 GitHub

    通过转到 GitHub 帐户上的“设置”来创建您的 GitHub OAuth 凭据,向下滚动到看到“开发人员设置”的位置,单击“OAuth 应用程序”,如下所示。

    Image descriptionImage description](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjqk3ax4mqwon0c1d830.png)Copy and save your `Client ID` and `Client Secrets` as shown below for later use on your Django project ![Image description

    2.设置Django

    在其他位置运行`pip install django-allauth dj-rest-auth request`以安装这些包。在应用程序的`settings.py`文件中,将以下代码块添加到您的

    SOCIALACCOUNT_PROVIDERS = {
        'github': {
            'APP': {
                'client_id': '',
                'secret': '',
                'key': ''
            }
        }
    }
    
    SITE_ID = 1

    如果您希望在管理员中捕获经过身份验证的用户的电子邮件,您可以将这行代码添加到项目的“settings.py”文件中

    ACCOUNT_EMAIL_REQUIRED = True

    我们继续修改“settings.py”文件,添加以下代码块

    'rest_framework',
    'rest_framework.authtoken',
    'dj_rest_auth',
    
    'django.contrib.sites',
    
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.github'

    在“settings.py”文件的中间件中包含以下代码行

    'allauth.account.middleware.AccountMiddleware',

    最后,我们修改项目的“urls.py”文件,添加以下代码块

    from allauth.socialaccount.providers.github import views as github_views
    
    path('api/auth/github/login/', github_views.oauth2_login, name='github_login'),
    path('api/auth/github/login/callback/', github_views.oauth2_callback, name='github_callback'),

    **注意:修改应该在项目的 urls.py 文件中完成,而不是应用程序的 urls.py 文件中完成**

    3. 测试身份验证端点

    Image description](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnt38690gnmzm4yryn3b0.png) and when you click on the `Continue` button you should be redirected to GitHub's authorization page ![Image description

    其他考虑事项

    Image descriptionImage description

    dj-auth-rest 和 social-auth-app-django 之间的区别

    dj-auth-rest 和 social-auth-app-django 都是用于在 Django 项目中促进身份验证的库,但它们满足不同的需求并且操作方式不同

    `dj-auth-rest` 用于基于 API 的项目,而 `social-auth-app-django` 用于基于 Web 的项目,两者都可以在同一个项目中使用

    结论

    将 GitHub OAuth 集成到您的 Django 应用程序中,为个人使用他们的 GitHub 凭据登录提供了一种安全且用户友好的方式。

    使用本指南,您可以增强应用程序的安全性,简化登录流程,并在访问相关用户数据时改善整体用户体验。