📜  Python| Django-allauth 设置和配置

📅  最后修改于: 2022-05-13 01:55:36.215000             🧑  作者: Mango

Python| Django-allauth 设置和配置

用户注册是 Web 应用程序最重要的部分之一。 django-registration-reduxdjango-alluth是 Django 中最著名的注册应用程序。本教程系列涉及django-allauth的设置、配置和自定义,并为希望快速开始使用allauth并在此过程中轻松进行有用自定义的新用户提供指南。

本文介绍了设置和一些基本配置。稍后,我们将处理社交登录、扩展类和高效使用DefaultAccountAdapter添加自定义流程。

对于django新手或django-allauth本身的新用户来说,它可能会让人不知所措。尽管它有很好的文档,但由于所涉及的开发人员的时间和资源限制,该库上的文章和深入的教程并不多。所以这个系列试图解决这个问题,并制作一个全面的系列指南,让django-allauth易于使用,并在 django-community 中使用。

如何设置?
您可以下载本教程中使用的文件以抢占先机。以下步骤将指导您完成设置。

  • 如果您还没有 Django 项目,请创建一个。
  • 使用命令pip install django-allauth django-allauth
  • 'allauth , allauth.account' , allauth.socialaccount和所有必要的社交登录名添加到INSTALLED_APPS.您可以在此处查看支持的 API 的完整列表。社交登录功能将在下一篇文章中详细介绍。配置您安装的应用程序后,应该与下面给出的类似。
INSTALLED_APPS = [
    'django.contrib.admin',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',
    'allauth.socialaccount.providers.facebook',
    'django.contrib.auth',
    'django.contrib.sites',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
  • settings.py中配置template上下文处理器设置,并在项目 urls.py 中添加 URL 模式
    TEMPLATES = [
      {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [
                os.path.normpath(os.path.join(BASE_DIR, 'templates')),
            ],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                    'django.template.context_processors.request',
                ],
            },
        },
    ]
    
  • 添加以下身份验证后端。
    AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
        'allauth.account.auth_backends.AuthenticationBackend',
    )
    
  • 从 django-allauth 存储库或我的自定义存储库中复制模板文件(我已经进行了一些修改和一些良好的结构)并将其粘贴到项目目录的templates文件夹中。
  • 在主项目目录的urls.py中添加 allauth url。添加 allauth url 后,如下所示,
    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url, include
    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r'^accounts/', include('allauth.urls')),
    ]
    
    • 您还可以添加自己的自定义 CSS 或我在使用 allauth 模板期间创建的 CSS(经过充分评论和记录)。它包括几乎所有页面的样式,甚至包括用于确认和密码重置电子邮件的移动友好电子邮件模板。您可以通过在项目目录中创建一个static文件夹并将 CSS 放在account文件夹中来做到这一点。
    • 运行python manage.py makemigrationspython manage.py migrate运行所有必要的迁移并运行python manage.py runserver启动 django 服务器。
    • 按照 URL 模式显示注册表单。
      例如: localhost:8000/accounts/login显示登录页面。


    配置:
    大多数 django-allauth 功能都可以使用内置的适配器和变量进行配置,方法是将它们放在settings.py.文件。尽管文档中有大量这样的选项并有很好的解释,但在下面强调了一些重要的选项。

    • 电子邮件确认到期:设置帐户需要激活的天数。例如: ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS=7
    • 激活所需的电子邮件:此选项允许您设置是否需要电子邮件地址进行注册。设置False以禁用电子邮件要求。例如: ACCOUNT_EMAIL_REQUIRED = True
    • 账号邮箱验证:该选项可用于设置用户注册账号后是否需要邮箱验证。您可以使用“强制”来阻止用户登录,直到电子邮件得到验证。您可以设置发送电子邮件的optional ,但允许用户在没有电子邮件的情况下登录。您还可以设置none以不发送任何验证电子邮件。 (不推荐)例如: ACCOUNT_EMAIL_VERIFICATION = "mandatory"
    • 登录尝试限制:这是一个重要功能,可用于防止对用户登录模块的暴力攻击。可以设置登录尝试的最大次数,并且用户在超时之前被阻止登录。此功能使用ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT设置。例如: ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5
    • 登录尝试限制超时:此设置需要与ACCOUNT_LOGIN_ATTEMPTS_LIMIT设置一起使用。设置的值以最后一次不成功登录尝试的秒数为单位。请不要认为这不会阻止管理员登录被暴力破解。 eg: ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400 # 1 day in seconds
    • 登录和注销 URL 重定向:当用户登录或注销时,您可能希望将用户重定向到特定的 URL 或页面,并且可以使用以下设置来设置这些值。默认情况下,allauth 将登录重定向到/accounts/profile/ URL 并注销到localhost:8000或任何localhost主页。
      例如: ACCOUNT_LOGOUT_REDIRECT_URL ='/accounts/login/'
      例如: LOGIN_REDIRECT_URL = '/accounts/email/'

    最后,您的allauth设置应类似于以下设置。

    #django-allauth registraion settings
    ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS =1
    ACCOUNT_EMAIL_REQUIRED = True
    ACCOUNT_EMAIL_VERIFICATION = "mandatory"
    ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5
      
    # 1 day
    ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400 
      
    #or any other page
    ACCOUNT_LOGOUT_REDIRECT_URL ='/accounts/login/' 
      
    # redirects to profile page if not configured.
    LOGIN_REDIRECT_URL = '/accounts/email/'
    


    参考资料
    django-allauth 官方文档
    我的自定义模板和 CSS