本文是有关如何实施 GitHub OAuth 进行安全用户身份验证的简单指南。
在本指南中我们将能够
为了充分利用本文,用户应该对
有一个公平的理解我们将通过 3 个简单的步骤来实现这一点
通过转到 GitHub 帐户上的设置来创建 GitHub OAuth 凭据,向下滚动到您看到开发人员设置的位置,单击 OAuth 应用程序,如下所示。
如果您有现有的应用程序,您可以编辑它,否则您可以通过单击“新建 OAuth 应用程序”来创建一个新应用程序并创建一个新应用程序,为该应用程序提供一个清晰且描述性的名称,添加到您的主页 URL http:// /localhost:8000/ 你可能想用 localhost: 替换 127.0.0.1: 如果这就是你配置 Django 应用程序运行的方式,那么你在 GitHub 上设置的任何配置都应该与你的应用程序上的配置相匹配为了避免引发服务器错误,请将此回调 url 添加到授权回调 URL http://localhost:8000/api/auth/github/login/callback/ 您的设置应反映您在下图中看到的内容。
复制并保存您的客户端 ID 和客户端密钥,如下所示,以便稍后在您的 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 文件
都完成了吗?访问端点 http://localhost:8000/api/auth/github/login/ 您应该被重定向到这样的页面,当您单击“继续”按钮时,您应该被重定向到 GitHub 的授权页面
您会注意到,身份验证成功后,您被重定向到 http://localhost:8000/accounts/profile/,其中显示 404 错误页面。
要解决此问题,我们可以为您的应用程序 urls.py 文件创建一个端点 /accounts/profile,然后为该端点创建一个相对视图。如果您的端点和视图设置正确,那么您现在应该看到此页面,而不是 404 错误页面
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中文网其他相关文章!