Django OAuth for Github - Datta Able(免费产品)。

375 阅读2分钟

编码员你好!

本文提到了Datta Able的最新功能,这是一个由Django驱动的开源种子项目。该项目已经更新,提供了使用Github的OAuth登录,一个持久的黑暗模式(UI改进),以及在Docker中更快的执行。对于新人来说,Django是一个强大的后端框架,用来在短时间内编码安全和强大的全栈应用程序。谢谢你的阅读!

在现有的网络应用中加入OAuth登录,可以提高安全性,也可以引导注册过程。

在Youtube上发布的这个简短的视频中,我们可以直观地看到最新的发展。

✨ 如何使用该产品

作为一个开源的启动器,使用或玩弄代码的最快方式是访问公共仓库(可在GitHub上找到)或使用GIT命令行工具来克隆源代码。一旦下载了源代码,Django Datta Able就可以通过Docker(使用单行)或使用经典的手动构建启动。

这一次,将使用Docker设置,如项目README中介绍的那样。

👉第1步- 从GH仓库下载代码(使用GIT)。

$ git clone https://github.com/app-generator/django-datta-able.git
$ cd django-datta-able

👉第2步- 启动APP在Docker

$ docker-compose up --build 

上述命令完成后,我们应该能够在浏览器中访问该应用程序。

Django OAuth via GitHub - Widgets Page (free template)

✨ OAuth for GitHub

如果在.env 文件中提供了Github secrets (GITHUB_ID,GITHUB_SECRET),该功能会在登录页面自动启用。如果秘密是有效的,登录页面会在登录卡上显示一个GitHub图标,告知用户这个登录选项是可用的。

# Sample '.env' file (truncated content)

# True for development, False for production
DEBUG=True

...

# If present, the SignIN exposes the Github Login Button
GITHUB_ID= SOME_GH_ID_HERE
GITHUB_SECRET= SOME_GH_SECRET_HERE

在用户界面中的效果突出显示如下。

Django OAuth via GitHub - Option enable.

✨ 如何在Django项目中添加OAuth

如果有人发现这个功能很有用,并想更新现有的应用程序,以下是步骤。

👉 Step #1 - Update dependencies to includeDjango-AllAuth

$ pip install django-allauth

为了持久性,该模块也应该包含在requirements.txt 文件中。

👉 第2步 - 更新项目设置以包括Allauth模块

# core/settings.py (truncated content)

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles', 
    'allauth',                                 # OAuth new
    'allauth.account',                         # OAuth new
    'allauth.socialaccount',                   # OAuth new 
    'allauth.socialaccount.providers.github',  # OAuth new 
    'allauth.socialaccount.providers.twitter'  # OAuth new  
]

👉 第三步 - 添加相关设置(文件底部)

# core/settings.py (truncated content)

AUTHENTICATION_BACKENDS = (
    "allauth.account.auth_backends.AuthenticationBackend",
)

SITE_ID = 1 

所有这些设置都是AllAuth library 所要求的。

👉 第四步 - 包括路由提供的AppAuth

对于Django Datta Able这个更新是在authentication/urls.py中进行的。

# apps/authentication/urls.py (truncated content)

urlpatterns = [
    path('login/', login_view, name="login"),
    path('register/', register_user, name="register"),
    path("logout/", LogoutView.as_view(), name="logout"),
    path('social_login/', include('allauth.urls')),       # OAuth new
]

👉 第5步 - 更新应用设置,从Github上读取机密信息。.env

# core/settings.py (truncated content)

GITHUB_ID     = os.getenv('GITHUB_ID', None)
GITHUB_SECRET = os.getenv('GITHUB_SECRET', None)
GITHUB_AUTH   = GITHUB_SECRET is not None and GITHUB_ID is not None

👉 第6步 - 更新签到页面

{% if GITHUB_AUTH %}
<div class="mx-2">
    <form method="post" action="/social_login/github/login/?next=%2F">
        {% csrf_token %}
        <button class="btn btn-light" type="submit" >
            <i class="feather icon-github auth-icon"></i></button>
    </form>
    <span class="mx-1">Sign IN with GitHub</span>
</div>                   
{% endif %}  

在这一点上,最后一步是迁移数据库,测试OAuth流程(registration,logout )。

谢谢你的阅读!如需更多资源和支持,请访问。

Datta Able Django - Free starter provided by AppSeed.