Szukaj…


Parametry

Oprawa Robi
Niektóre konfiguracje Przydatne podstawowe ustawienia, które pasują do Django-Allauth (którego używam przez większość czasu). Aby uzyskać więcej opcji konfiguracji, zobacz Konfiguracje
ACCOUNT_AUTHENTICATION_METHOD (= „nazwa użytkownika” lub „e-mail” lub „nazwa_użytkownika”) Określa metodę logowania do użycia - niezależnie od tego, czy użytkownik loguje się, wprowadzając swoją nazwę użytkownika, adres e-mail lub jedno z obu tych elementów. Ustawienie na „e-mail” wymaga ACCOUNT_EMAIL_REQUIRED = Prawda
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (= 3) Określa datę ważności wiadomości e-mail z potwierdzeniem (liczba dni).
ACCOUNT_EMAIL_REQUIRED (= False) Podczas rejestracji użytkownik musi podać adres e-mail. Jest to zgodne z ustawieniem ACCOUNT_AUTHENTICATION_METHOD
ACCOUNT_EMAIL_VERIFICATION (= „opcjonalne”) Określa metodę weryfikacji wiadomości e-mail podczas rejestracji - wybierz jedną z „obowiązkowych”, „opcjonalnych” lub „brak”. Po ustawieniu na „obowiązkowe” użytkownik nie może się zalogować, dopóki adres e-mail nie zostanie zweryfikowany. Wybierz „opcjonalne” lub „brak”, aby zezwolić na logowanie przy użyciu niezweryfikowanego adresu e-mail. W przypadku „opcjonalnego” e-mail weryfikacyjny jest nadal wysyłany, natomiast w przypadku „brak” nie są wysyłane e-maile weryfikacyjne.
ACCOUNT_LOGIN_ATTEMPTS_LIMIT (= 5) Liczba nieudanych prób logowania. Po przekroczeniu tej liczby użytkownik nie może zalogować się na określone ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT sekund. Chociaż chroni to widok logowania Allauth, nie chroni logowania administratora Django przed brutalnym wymuszeniem.
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (= Fałsz) Określa, czy użytkownik jest automatycznie wylogowywany po zmianie lub ustawieniu hasła.
SOCIALACCOUNT_PROVIDERS (= dict) Słownik zawierający ustawienia specyficzne dla dostawcy.

Prosty sposób: python-social-auth

python-social-auth to framework, który upraszcza mechanizm uwierzytelniania i autoryzacji społecznościowej. Zawiera wiele backendów społecznościowych (Facebook, Twitter, Github, LinkedIn itp.)

ZAINSTALOWAĆ

Najpierw musimy zainstalować pakiet python-social-auth

pip install python-social-auth

lub pobierz kod z github. Teraz jest dobry czas, aby dodać to do pliku requirements.txt .

KONFIGURACJA settings.py

W pliku settings.py dodaj:

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

KONFIGURACJA OPCJI

AUTHENTICATION_BACKENDS zawiera backendy, których będziemy używać, i musimy tylko umieścić to, czego potrzebujemy.

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',
)

Twój projekt settings.py może nie mieć jeszcze pola AUTHENTICATION_BACKENDS . W takim przypadku dodaj pole. Pamiętaj, aby nie przegapić 'django.contrib.auth.backends.ModelBackend', ponieważ obsługuje logowanie za pomocą nazwy użytkownika / hasła.

Jeśli korzystamy na przykład z Facebooka i zaplecza LinkedIn, musimy dodać klucze API

SOCIAL_AUTH_FACEBOOK_KEY = 'YOURFACEBOOKKEY'
SOCIAL_AUTH_FACEBOOK_SECRET = 'YOURFACEBOOKSECRET'

i

SOCIAL_AUTH_LINKEDIN_KEY = 'YOURLINKEDINKEY'
SOCIAL_AUTH_LINKEDIN_SECRET = 'YOURLINKEDINSECRET'

Uwaga : Możesz uzyskać niezbędne klucze w programistach Facebooka i Linkedin, a tutaj możesz zobaczyć pełną listę i sposób, w jaki określa klucz API i klucz tajny.

Uwaga na temat tajnych kluczy: tajne klucze należy zachować w tajemnicy. Oto wyjaśnienie przepełnienia stosu, które jest pomocne. Ten samouczek jest pomocny w poznawaniu zmiennych środowiskowych.

TEMPLATE_CONTEXT_PROCESSORS pomoże w przekierowaniach, backendach i innych rzeczach, ale na początku potrzebujemy tylko:

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

W Django 1.8 konfiguracja TEMPLATE_CONTEXT_PREPROCESSORS jak pokazano powyżej, była przestarzała. Jeśli tak jest w Twoim przypadku, dodasz go do dykt TEMPLATES . Twój powinien wyglądać podobnie do tego:

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',
            ],
        },
    },
] 

KORZYSTANIE Z NIESTANDARDOWEGO UŻYTKOWNIKA

Jeśli używasz niestandardowego modelu użytkownika i chcesz się z nim skojarzyć, po prostu dodaj następujący wiersz (nadal w pliku settings.py )

SOCIAL_AUTH_USER_MODEL = 'somepackage.models.CustomUser'    

CustomUser to model, który dziedziczy lub Abstrakt od domyślnego użytkownika.

KONFIGURACJA 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'))
    ...
)

Następnie należy zsynchronizować bazę danych, aby utworzyć potrzebne modele:

./manage.py migrate

Wreszcie możemy grać!

w niektórych szablonach musisz dodać coś takiego:

    <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>

jeśli używasz innego zaplecza, po prostu zmień „facebook” według nazwy zaplecza.

Wylogowywanie użytkowników

Po zalogowaniu użytkowników prawdopodobnie będziesz chciał stworzyć funkcjonalność umożliwiającą ich wylogowanie. W niektórych szablonach, prawdopodobnie w pobliżu miejsca, w którym pokazano szablon logowania, dodaj następujący tag:

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

lub

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

Będziesz chciał edytować plik urls.py pomocą kodu podobnego do:

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

Na koniec edytuj plik views.py kodem podobnym do:

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

Korzystanie z Django Allauth

Dla wszystkich moich projektów Django-Allauth pozostał jednym, który jest łatwy do skonfigurowania i wychodzi z pudełka z wieloma funkcjami, w tym między innymi:

  • Ponad 50 uwierzytelnień w sieciach społecznościowych
  • Łącz rejestrację kont lokalnych i społecznościowych
  • Wiele kont społecznościowych
  • Opcjonalna natychmiastowa rejestracja kont społecznościowych - bez zadawania pytań
  • Zarządzanie adresami e-mail (wiele adresów e-mail, ustawianie podstawowego)
  • Zapomniane hasło Przepływ weryfikacji adresu e-mail

Jeśli chcesz zabrudzić sobie ręce, Django-Allauth zejdzie ci z drogi, dzięki dodatkowym konfiguracjom, aby ulepszyć proces i korzystanie z systemu uwierzytelniania.

Poniższe kroki zakładają, że używasz Django 1.10+

Kroki instalacji:

pip install django-allauth

W pliku settings.py wprowadź następujące zmiany:

# 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

Po zakończeniu zmian w pliku settings.py powyżej przejdź do pliku urls.py To może być Twój yourapp/urls.py lub swoją ProjectName/urls.py . Zwykle wolę ProjectName/urls.py

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

Wystarczy dodać parametr include('allauth.urls') , aby otrzymać te adresy URL za darmo:

^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']

Na koniec wykonaj python ./manage.py migrate aby zatwierdzić migrację Django-allauth do bazy danych.

Jak zwykle, aby móc zalogować się do aplikacji za pomocą dowolnej dodanej sieci społecznościowej, musisz dodać szczegóły konta społecznościowego sieci.

Zaloguj się do administratora Django ( localhost:8000/admin ) i w sekcji Social Applications aby dodać dane konta społecznościowego.

Możesz potrzebować kont u każdego dostawcy uwierzytelniania, aby uzyskać szczegółowe informacje do wypełnienia w sekcjach Aplikacje społecznościowe.

Aby uzyskać szczegółowe konfiguracje tego, co możesz mieć i dostosować, zobacz stronę Konfiguracje .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow