django-allauth添加github账号访问入口

Posted Django学堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django-allauth添加github账号访问入口相关的知识,希望对你有一定的参考价值。


中秋节国庆节双节快乐


打算给本网站www.codingsoho.com增加登陆系统,以支持评论等操作。本项目采用django-allauth作为登陆组件,django-allauth是第一个强大的第三方库,能支持多种登陆,包括github, weibo, wechat等,本文会着重介绍github的登陆,这也是码农必备的网站。


安装

INSTALLATION


安装 django-allauth

pip install django-allauth

在settings.py中配置allauth,首先添加相应的app,并添加allauth的BACKEND

INSTALLED_APPS = [# 必须安装的app 'django.contrib.auth', 'allauth', 'allauth.account', 'allauth.socialaccount', # 'allauth.socialaccount.providers.weibo', 'allauth.socialaccount.providers.github', 'allauth.socialaccount.providers.weixin',] # allauth BACKENDSAUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend',)


github网站配置



访问App registration (get your key and secret here) 注册网址,用于获取Key和Secret https://github.com/settings/applications/new

可以用自己的账号登陆,然后创建如下的配置


对于正式网站,用网址代替上面的ip即可。如果登陆网址为http://127.0.0.1:8000/zh/accounts/login/,那么对应的callback网址则为http://127.0.0.1:8000/zh/accounts/github/login/callback/


admin social app 配置



将上面获取的Client ID和Client Secret添加到github provider

django-allauth添加github账号访问入口

可在下面路径查看设置

Settings / Developer settings / OAuth Apps


登陆



下面是默认的登陆界面,比较丑,除了系统账号登陆,它还根据你配置的第三方app添加对应的访问入口。注意:weixin入口只能在微信终端访问

django-allauth添加github账号访问入口

点击Github即可跳转到Github网站进行授权登陆。

每次登陆成功后,都会在系统生成一个application token,并在创建一个社交账号

django-allauth添加github账号访问入口

建立的social account相关数据表如下

django-allauth添加github账号访问入口


其他配置


参考 https://django-allauth.readthedocs.io/en/latest/configuration.html


django-allauth添加github账号访问入口

邮箱注册

django-allauth添加github账号访问入口


除了第三方登陆,它也支持默认的系统账号登陆,可以直接通过邮箱注册登陆

ACCOUNT_EMAIL_REQUIRED (=False)
The user is required to hand over an e-mail address when signing up. 注册时是否需要输入邮箱地址,默认为False
ACCOUNT_EMAIL_VERIFICATION (=”optional”)

Determines the e-mail verification method during signup – choose one of "mandatory" "optional" , or  "none" .
Settin g th i s to “mandatory” require s ACCOUNT_EMAIL_REQUIRED to be True
When set to “mandatory” the user is blocked from logging in until the email address is verified. Choose “optional” or “none” to allow logins with an unverified e-mail address. 
In case of “optional”, the e-mail verification mail is still sent, whereas in case of “none” no e-mail verification mails are sent.

邮箱配置如下,详细的解释可参考http://www.codingsoho.com/zh/blog/blog-system-backup/

EMAIL_HOST = "smtp.sina.com"EMAIL_PORT = 465EMAIL_HOST_USER = "codingsoho@sina.com"try: from setting_security import EMAIL_HOST_PASSWORDexcept: EMAIL_HOST_PASSWORD = "password"EMAIL_USE_TLS = FalseEMAIL_USE_SSL = True# EMAIL_USE_SSL 和 EMAIL_USE_TLS 是互斥的,即只能有一个为 True。EMAIL_FROM = "codingsoho@sina.com"DEFAULT_FROM_EMAIL = "Django 学堂 <codingsoho@sina.com>"

用户可以通过下面界面进行注册

django-allauth添加github账号访问入口

注册请求成功后,系统会发送邮件到指定邮箱,用户访问发送链接激活该账户就可以登陆了。同时,后台数据库中可以看到添加了email表及激活状态

django-allauth添加github账号访问入口

具体邮件通知内容或者注册登陆相关的模板,可以重写模板目录文件allauth emplatesaccount


Social Account 配置

django-allauth添加github账号访问入口
django-allauth添加github账号访问入口


如果除了公共数据还想访问一些其他的数据的话,可以指定scope

SOCIALACCOUNT_PROVIDERS = { 'github': { 'SCOPE': [ 'user', 'repo', 'read:org', ], },}

那么,访问时界面如下

以上是关于django-allauth添加github账号访问入口的主要内容,如果未能解决你的问题,请参考以下文章

Django django-allauth 实现第三方授权登陆平台(百度和github为例)

使用 django-allauth 额外数据添加自定义用户

我的第一次

使用 django-allauth 和 django-rest 框架

如何编辑 django-allauth 默认模板?

如何使用 django-allauth 访问用户名和配置文件