Поиск…


параметры

настройка Есть ли
Некоторые конфигурации Удобные базовые настройки, которые идут с Django-Allauth (которые я использую большую часть времени). Дополнительные параметры конфигурации см. В разделе Конфигурации
ACCOUNT_AUTHENTICATION_METHOD (= «имя пользователя» или «электронная почта» или «имя_пользователя») Задает метод входа в систему - вводит ли пользователь вход, введя свое имя пользователя, адрес электронной почты или любой из них. Для этого для «email» требуется ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (= 3) Определяет дату истечения срока действия писем с подтверждением электронной почты (количество дней).
ACCOUNT_EMAIL_REQUIRED (= False) Пользователь должен передать адрес электронной почты при регистрации. Это происходит в тандеме с настройкой ACCOUNT_AUTHENTICATION_METHOD
ACCOUNT_EMAIL_VERIFICATION (= "опционально") Определяет метод проверки электронной почты во время регистрации - выберите один из «обязательный», «необязательный» или «none». Если установлено «обязательное», пользователь блокируется от входа в систему до тех пор, пока не будет проверен адрес электронной почты. Выберите «optional» или «none», чтобы разрешить логины с непроверенным адресом электронной почты. В случае «факультативного» почта электронной почты по-прежнему отправляется, тогда как в случае «ни одного» письма с проверкой электронной почты не отправляются.
ACCOUNT_LOGIN_ATTEMPTS_LIMIT (= 5) Количество неудачных попыток входа в систему. Когда это число превышено, пользователю запрещается входить в систему для указанных ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT секунд. Хотя это защищает просмотр входа allauth, он не защищает логин администратора Django от принудительного принуждения.
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (= False) Определяет, будет ли пользователь автоматически выходить из системы после изменения или установки своего пароля.
SOCIALACCOUNT_PROVIDERS (= dict) Словарь, содержащий настройки конкретного поставщика.

Простой способ: python-social-auth

python-social-auth - это структура, упрощающая механизм социальной аутентификации и авторизации. Он содержит множество социальных бэкэндов (Facebook, Twitter, Github, LinkedIn и т. Д.)

УСТАНОВИТЬ

Сначала нам нужно установить пакет python-social-auth с

pip install python-social-auth

или загрузить код из github. Теперь самое время добавить это в файл requirements.txt .

НАСТРОЙКА settings.py

В settings.py добавьте:

INSTALLED_APPS = (
    ...
    'social.apps.django_app.default',
    ...
)

КОНФИГУРИРОВАНИЕ РЕЗЕРВОВ

AUTHENTICATION_BACKENDS содержит бэкэнды, которые мы будем использовать, и нам нужно только поставить то, что нам нужно.

AUTHENTICATION_BACKENDS = (
    'social.backends.open_id.OpenIdAuth',
    'social.backends.google.GoogleOpenId',
    'social.backends.google.GoogleOAuth2',
    'social.backends.google.GoogleOAuth',
    'social.backends.twitter.TwitterOAuth',
    'social.backends.yahoo.YahooOpenId',
    ...
    'django.contrib.auth.backends.ModelBackend',
)

Возможно, у вашего проекта settings.py еще нет поля AUTHENTICATION_BACKENDS . Если это так, добавьте это поле. Не забудьте пропустить 'django.contrib.auth.backends.ModelBackend', поскольку он обрабатывает логин по имени пользователя / паролю.

Если мы используем, например, Facebook и Linkedin Backends, нам нужно добавить ключи API

SOCIAL_AUTH_FACEBOOK_KEY = 'YOURFACEBOOKKEY'
SOCIAL_AUTH_FACEBOOK_SECRET = 'YOURFACEBOOKSECRET'

а также

SOCIAL_AUTH_LINKEDIN_KEY = 'YOURLINKEDINKEY'
SOCIAL_AUTH_LINKEDIN_SECRET = 'YOURLINKEDINSECRET'

Примечание . Вы можете получить закрытые ключи в разработчиках Facebook и разработчиках Linkedin, и здесь вы можете увидеть полный список и его соответствующий способ узнать ключ API и ключ Secret.

Примечание по секретным ключам: секретные ключи должны храниться в секрете. Ниже приведено описание переполнения стека, которое полезно. Этот учебник полезен для изучения переменных среды.

TEMPLATE_CONTEXT_PROCESSORS помогут переадресации, backend и другие вещи, но в начале нам нужны только эти:

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'social.apps.django_app.context_processors.backends',
    'social.apps.django_app.context_processors.login_redirect',
    ...
)

В Django 1.8 настройка TEMPLATE_CONTEXT_PREPROCESSORS как показано выше, устарела. Если это так, вы добавите его внутри TEMPLATES dict. Ваш взгляд должен выглядеть примерно так:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [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',
                'social.apps.django_app.context_processors.backends',
                'social.apps.django_app.context_processors.login_redirect',
            ],
        },
    },
] 

ИСПОЛЬЗОВАНИЕ ТАМОЖЕННОГО ПОЛЬЗОВАТЕЛЯ

Если вы используете пользовательскую модель пользователя и хотите присоединиться к ней, просто добавьте следующую строку (все еще в settings.py )

SOCIAL_AUTH_USER_MODEL = 'somepackage.models.CustomUser'    

CustomUser - это модель, наследующая или абстрактная от пользователя по умолчанию.

КОНФИГУРАЦИЯ urls.py

# if you haven't imported inlcude make sure you do so at the top of your file
from django.conf.urls import url, include

urlpatterns = patterns('',
    ...
    url('', include('social.apps.django_app.urls', namespace='social'))
    ...
)

Затем необходимо синхронизировать базу данных для создания необходимых моделей:

./manage.py migrate

Наконец мы можем играть!

в каком-то шаблоне вам нужно добавить что-то вроде этого:

    <a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}">Login with Facebook</a>
    <a href="{% url 'social:begin' 'linkedin' %}?next={{ request.path }}">Login with Linkedin</a>

если вы используете другой бэкэнд, просто измените «facebook» на имя бэкэнда.

Запуск пользователей

После того, как вы зарегистрировали пользователей, вы, скорее всего, захотите создать функциональность для их регистрации. В некоторых шаблонах, вероятно, рядом с тем, где был показан шаблон журнала, добавьте следующий тег:

<a href="{% url 'logout' %}">Logout</a>

или же

<a href="/logout">Logout</a>

Вы захотите отредактировать файл urls.py с кодом, похожим на:

url(r'^logout/$', views.logout, name='logout'),

Наконец, отредактируйте файл views.py с кодом, похожим на:

def logout(request):
    auth_logout(request)
    return redirect('/')

Использование 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

urls.py изменения в файле 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') , вы получите эти URL бесплатно:

^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 чтобы python ./manage.py migrate Django-allauth в базу данных.

Как обычно, чтобы иметь возможность войти в ваше приложение с помощью какой-либо социальной сети, которую вы добавили, вам нужно будет добавить информацию о социальной учетной записи в сети.

Войдите в администратор Django ( localhost:8000/admin ) и в разделе « Social Applications чтобы добавить информацию о своей социальной учетной записи.

Для получения подробной информации о заполнении в разделах «Социальные приложения» вам могут потребоваться учетные записи у каждого поставщика авторизации.

Подробные сведения о том, что вы можете иметь и настроить, см. На странице «Конфигурации» .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow