Django
Django und soziale Netzwerke
Suche…
Parameter
Rahmen | Tut |
---|---|
Einige Konfigurationen | Praktische Grundeinstellungen für Django-Allauth (die ich meistens verwende). Weitere Konfigurationsoptionen finden Sie unter Konfigurationen |
ACCOUNT_AUTHENTICATION_METHOD (= "Benutzername" oder "E-Mail" oder "Benutzername_E-Mail") | Gibt die zu verwendende Anmeldemethode an - ob sich der Benutzer anmeldet, indem er seinen Benutzernamen, seine E-Mail-Adresse oder eine von beiden eingibt Wenn Sie diese Option auf "E-Mail" setzen, ist ACCOUNT_EMAIL_REQUIRED = True erforderlich |
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (= 3) | Bestimmt das Ablaufdatum von E-Mail-Bestätigungsmails (Anzahl der Tage). |
ACCOUNT_EMAIL_REQUIRED (= False) | Der Benutzer muss bei der Anmeldung eine E-Mail-Adresse übergeben. Dies geht ACCOUNT_AUTHENTICATION_METHOD mit der Einstellung ACCOUNT_AUTHENTICATION_METHOD |
ACCOUNT_EMAIL_VERIFICATION (= "optional") | Bestimmt die E-Mail-Überprüfungsmethode während der Anmeldung. Wählen Sie "obligatorisch", "optional" oder "keine". Bei der Einstellung „obligatorisch“ wird der Benutzer solange von der Anmeldung ausgeschlossen, bis die E-Mail-Adresse bestätigt ist. Wählen Sie "optional" oder "none", um Anmeldungen mit einer nicht bestätigten E-Mail-Adresse zuzulassen. Bei "optional" wird die E-Mail-Bestätigungsmail immer noch gesendet, während bei "Keine" keine E-Mail-Bestätigungsmail gesendet wird. |
ACCOUNT_LOGIN_ATTEMPTS_LIMIT (= 5) | Anzahl fehlgeschlagener Anmeldeversuche Wenn diese Anzahl überschritten wird, kann der Benutzer sich für die angegebenen Sekunden ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT nicht anmelden. Dies schützt zwar die Allauth-Login-Ansicht, schützt jedoch nicht, dass der Admin-Login von Django brutal erzwungen wird. |
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (= False) | Legt fest, ob der Benutzer nach dem Ändern oder Festlegen des Kennworts automatisch abgemeldet wird. |
SOCIALACCOUNT_PROVIDERS (= Dikt) | Wörterbuch mit anbieterspezifischen Einstellungen. |
Einfache Möglichkeit: Python-Social-Auth
python-social-auth ist ein Framework, das den Mechanismus der sozialen Authentifizierung und Autorisierung vereinfacht. Es enthält viele soziale Hintergründe (Facebook, Twitter, Github, LinkedIn usw.).
INSTALLIEREN
Zuerst müssen wir das python-social-auth-Paket mit installieren
pip install python-social-auth
oder laden Sie den Code von Github herunter. Jetzt ist ein guter Zeitpunkt, um dies zu Ihrer Datei requirements.txt
hinzuzufügen.
KONFIGURIEREN von Einstellungen.py
In der Einstellungen.py hinzufügen:
INSTALLED_APPS = (
...
'social.apps.django_app.default',
...
)
HINTERGRÜNDE KONFIGURIEREN
AUTHENTICATION_BACKENDS enthält die Backends, die wir verwenden werden, und wir müssen nur das setzen, was wir brauchen.
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',
)
Ihr Projekt settings.py
möglicherweise noch kein AUTHENTICATION_BACKENDS
Feld. Wenn dies der Fall ist, fügen Sie das Feld hinzu. Verpassen Sie nicht 'django.contrib.auth.backends.ModelBackend',
da hier die Anmeldung nach Benutzername / Passwort erfolgt.
Wenn wir beispielsweise Facebook und Linkedin Backends verwenden, müssen wir die API-Schlüssel hinzufügen
SOCIAL_AUTH_FACEBOOK_KEY = 'YOURFACEBOOKKEY'
SOCIAL_AUTH_FACEBOOK_SECRET = 'YOURFACEBOOKSECRET'
und
SOCIAL_AUTH_LINKEDIN_KEY = 'YOURLINKEDINKEY'
SOCIAL_AUTH_LINKEDIN_SECRET = 'YOURLINKEDINSECRET'
Hinweis : Sie können die verknüpften Schlüssel von Facebook-Entwicklern und LinkedIn-Entwicklern beziehen. Hier können Sie die vollständige Liste und ihre jeweilige Methode zum Festlegen des API-Schlüssels und des Schlüssels Secret sehen.
Hinweis zu den geheimen Schlüsseln: Geheimschlüssel sollten geheim gehalten werden. Hier ist eine Stack Overflow-Erklärung, die hilfreich ist. Dieses Tutorial ist hilfreich für das Erlernen von Umgebungsvariablen.
TEMPLATE_CONTEXT_PROCESSORS hilft bei Umleitungen, Backends und anderen Dingen, aber am Anfang benötigen wir nur diese:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'social.apps.django_app.context_processors.backends',
'social.apps.django_app.context_processors.login_redirect',
...
)
In Django 1.8 wurde das Einrichten von TEMPLATE_CONTEXT_PREPROCESSORS
wie oben gezeigt nicht mehr TEMPLATE_CONTEXT_PREPROCESSORS
. Wenn dies für Sie der Fall ist, fügen Sie es innerhalb des TEMPLATES
. Deine sollte ungefähr so aussehen:
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',
],
},
},
]
VERWENDUNG EINES BENUTZERS
Wenn Sie ein benutzerdefiniertes Benutzermodell verwenden und diesem zugeordnet werden möchten, fügen Sie einfach die folgende Zeile hinzu (noch in settings.py ).
SOCIAL_AUTH_USER_MODEL = 'somepackage.models.CustomUser'
CustomUser
ist ein Modell, das von Standardbenutzer erbt oder abstrakt ist.
Urls.py KONFIGURIEREN
# 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'))
...
)
Als nächstes müssen Sie die Datenbank synchronisieren, um die benötigten Modelle zu erstellen:
./manage.py migrate
Endlich können wir spielen!
In einer Vorlage müssen Sie Folgendes hinzufügen:
<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>
Wenn Sie ein anderes Backend verwenden, ändern Sie einfach "facebook" durch den Backend-Namen.
Benutzer abmelden
Sobald Sie Benutzer angemeldet haben, möchten Sie wahrscheinlich die Funktionalität erstellen, um sie wieder abzumelden. Fügen Sie in einer Vorlage in der Nähe der Stelle, an der die Login-Vorlage angezeigt wurde, das folgende Tag hinzu:
<a href="{% url 'logout' %}">Logout</a>
oder
<a href="/logout">Logout</a>
Sie möchten Ihre urls.py
Datei mit dem folgenden Code bearbeiten:
url(r'^logout/$', views.logout, name='logout'),
Bearbeiten Sie zuletzt Ihre views.py-Datei mit ähnlichem Code:
def logout(request):
auth_logout(request)
return redirect('/')
Verwendung von Django Allauth
Für alle meine Projekte blieb Django-Allauth eines, das einfach einzurichten ist und mit vielen Funktionen ausgestattet ist. Dazu gehören unter anderem:
- Etwa 50 Authentifizierungen in sozialen Netzwerken
- Mischen Sie die Anmeldung von lokalen und sozialen Konten
- Mehrere soziale Konten
- Optionale Sofortanmeldung für soziale Konten - keine Fragen gestellt
- E-Mail-Adressenverwaltung (mehrere E-Mail-Adressen, Festlegen einer primären Adresse)
- Passwort vergessener Fluss E-Mail-Adressenüberprüfung
Wenn Sie sich die Hände schmutzig machen wollen, steht Django-Allauth mit zusätzlichen Konfigurationen zur Verfügung, um den Prozess und die Verwendung Ihres Authentifizierungssystems zu optimieren.
Die folgenden Schritte setzen voraus, dass Sie Django 1.10+ verwenden
Einrichtungsschritte:
pip install django-allauth
Nehmen Sie in Ihrer Datei settings.py
folgende Änderungen vor:
# 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
Wenn Sie mit den Änderungen in der Datei settings.py
oben urls.py
, wechseln urls.py
Datei urls.py
Es kann Ihre yourapp/urls.py
oder Ihr ProjectName/urls.py
. Normalerweise bevorzuge ich den ProjectName/urls.py
urlpatterns = [
# other urls here
url(r'^accounts/', include('allauth.urls')),
# other urls here
]
Durch das Hinzufügen des include('allauth.urls')
Sie folgende URLs kostenlos:
^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
schließlich python ./manage.py migrate
, um die Migranten von Django-allauth in die Datenbank einzugeben.
Damit Sie sich über jedes hinzugefügte soziale Netzwerk bei Ihrer App anmelden können, müssen Sie die Details des sozialen Kontos des Netzwerks hinzufügen.
Melden Sie sich bei Django Admin ( localhost:8000/admin
) und unter " Social Applications
im Feld "Ihr soziales Konto" an.
Möglicherweise benötigen Sie Konten bei jedem Authentifizierungsanbieter, um Details zu den Social Applications-Bereichen zu erhalten.
Ausführliche Informationen zu den möglichen Einstellungen und Optimierungen finden Sie auf der Seite Konfigurationen .