首页  >  文章  >  后端开发  >  使用 dj-rest-auth 将 GitHub 身份验证集成到 Django 项目中

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

Susan Sarandon
Susan Sarandon原创
2024-11-22 02:27:11432浏览

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

在本指南中我们将能够

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

先决条件

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

有一个公平的理解
  • GitHub
  • 姜戈
  • Django 休息框架

我们将通过 3 个简单的步骤来实现这一点

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

1.设置GitHub

通过转到 GitHub 帐户上的设置来创建 GitHub OAuth 凭据,向下滚动到您看到开发人员设置的位置,单击 OAuth 应用程序,如下所示。
Using dj-rest-auth to integrate GitHub authentication in your Django project如果您有现有的应用程序,您可以编辑它,否则您可以通过单击“新建 OAuth 应用程序”来创建一个新应用程序并创建一个新应用程序,为该应用程序提供一个清晰且描述性的名称,添加到您的主页 URL http:// /localhost:8000/ 你可能想用 localhost: 替换 127.0.0.1: 如果这就是你配置 Django 应用程序运行的方式,那么你在 GitHub 上设置的任何配置都应该与你的应用程序上的配置相匹配为了避免引发服务器错误,请将此回调 url 添加到授权回调 URL http://localhost:8000/api/auth/github/login/callback/ 您的设置应反映您在下图中看到的内容。
Using dj-rest-auth to integrate GitHub authentication in your Django project复制并保存您的客户端 ID 和客户端密钥,如下所示,以便稍后在您的 Django 项目中使用 Using dj-rest-auth to integrate GitHub authentication in your Django project

2. 设置Django

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

SOCIALACCOUNT_PROVIDERS = {
    'github': {
        'APP': {
            'client_id': '<github_client_id>',
            'secret': '<github_secret_keys>',
            '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. 测试认证端点

都完成了吗?访问端点 http://localhost:8000/api/auth/github/login/ 您应该被重定向到这样的页面Using dj-rest-auth to integrate GitHub authentication in your Django project,当您单击“继续”按钮时,您应该被重定向到 GitHub 的授权页面Using dj-rest-auth to integrate GitHub authentication in your Django project

额外考虑

您会注意到,身份验证成功后,您被重定向到 http://localhost:8000/accounts/profile/,其中显示 404 错误页面。 Using dj-rest-auth to integrate GitHub authentication in your Django project

要解决此问题,我们可以为您的应用程序 urls.py 文件创建一个端点 /accounts/profile,然后为该端点创建一个相对视图。如果您的端点和视图设置正确,那么您现在应该看到此页面,而不是 404 错误页面 Using dj-rest-auth to integrate GitHub authentication in your Django project

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 凭据登录提供了一种安全且用户友好的方式。

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

以上是使用 dj-rest-auth 将 GitHub 身份验证集成到 Django 项目中的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn