使用 Django Allauth

对于我的所有项目,Django-Allauth 仍然是一个易于设置的项目,开箱即用,包括但不限于:

  • 大约 50 多个社交网络身份验证
  • 混合本地和社交帐户的注册
  • 多个社交帐户
  • 社交帐户的可选即时注册 - 没有问题
  • 电子邮件地址管理(多个电子邮件地址,设置主要)
  • 密码忘记流程电子邮件地址验证流程

如果你有兴趣亲自动手,Django-Allauth 可以通过其他配置来调整流程和使用你的身份验证系统。

以下步骤假设你使用的是 Django 1.10+

设置步骤:

pip install django-allauth

在你的 settings.py 文件中,进行以下更改:

# Specify the context processors as follows:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                # Already defined Django-related contexts here

                # `allauth` needs this from django. It is there by default,
                # unless you've devilishly taken it away.
                'django.template.context_processors.request',
            ],
        },
    },
]

AUTHENTICATION_BACKENDS = (
    # Needed to login by username in Django admin, regardless of `allauth`
    'django.contrib.auth.backends.ModelBackend',

    # `allauth` specific authentication methods, such as login by e-mail
    'allauth.account.auth_backends.AuthenticationBackend',
)

INSTALLED_APPS = (
# Up here is all your default installed apps from Django

# The following apps are required:
'django.contrib.auth',
'django.contrib.sites',

'allauth',
'allauth.account',
'allauth.socialaccount',

# include the providers you want to enable:
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.facebook',
)

# Don't forget this little dude.
SITE_ID = 1

完成上面 settings.py 文件的更改后,转到 urls.py 文件。它可以是你的 yourapp/urls.py 或你的 ProjectName/urls.py。通常,我更喜欢 ProjectName/urls.py

urlpatterns = [
    # other urls here
    url(r'^accounts/', include('allauth.urls')),
    # other urls here
]

只需添加 include('allauth.urls'),即可免费获得这些网址:

^accounts/ ^ ^signup/$ [name='account_signup']
^accounts/ ^ ^login/$ [name='account_login']
^accounts/ ^ ^logout/$ [name='account_logout']
^accounts/ ^ ^password/change/$ [name='account_change_password']
^accounts/ ^ ^password/set/$ [name='account_set_password']
^accounts/ ^ ^inactive/$ [name='account_inactive']
^accounts/ ^ ^email/$ [name='account_email']
^accounts/ ^ ^confirm-email/$ [name='account_email_verification_sent']
^accounts/ ^ ^confirm-email/(?P<key>[-:\w]+)/$ [name='account_confirm_email']
^accounts/ ^ ^password/reset/$ [name='account_reset_password']
^accounts/ ^ ^password/reset/done/$ [name='account_reset_password_done']
^accounts/ ^ ^password/reset/key/(?P<uidb36>[0-9A-Za-z]+)-(?P<key>.+)/$ [name='account_reset_password_from_key']
^accounts/ ^ ^password/reset/key/done/$ [name='account_reset_password_from_key_done']
^accounts/ ^social/
^accounts/ ^google/
^accounts/ ^twitter/
^accounts/ ^facebook/
^accounts/ ^facebook/login/token/$ [name='facebook_login_by_token']

最后,使用 python ./manage.py migrate 将 Django-allauth 迁移到数据库中。

像往常一样,为了能够使用你添加的任何社交网络登录你的应用,你必须添加网络的社交帐户详细信息。

登录 Django Admin(localhost:8000/admin)并在 Social Applications 下添加你的社交帐户详细信息。

你可能需要每个身份验证提供程序的帐户才能获取要填写社交应用程序部分的详细信息。

有关你可以拥有和调整的详细配置,请参阅“ 配置”页面