[PYTHON] Authentifizieren Sie Google mit Django

Authentifizieren Sie Google mit Django

Melden Sie sich bei Django mit Ihrem Google-Konto anstelle Ihres eigenen an. Ich habe es überhaupt nicht verstanden, als ich ReadMe des zu verwendenden Moduls gelesen habe. Machen Sie sich also eine Notiz.

Was zu verwenden

Die Version ist die, die ich verwendet habe.

Verfahren

Es wird davon ausgegangen, dass "python manage.py runserver" betriebsbereit ist. Stellen Sie außerdem sicher, dass die Google App bereits erstellt wurde und Sie über eine ID und einen geheimen Schlüssel verfügen.

Installieren Sie zuerst python-social-auth pip install python-social-auth

Schreiben Sie dann die Einstellungen in settings.py und urls.py.

Fügen Sie Folgendes zu project / settings.py hinzu

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

TEMPLATE_CONTEXT_PROCESSORS = (
   'django.contrib.auth.context_processors.auth',
   'django.core.context_processors.debug',
   'django.core.context_processors.i18n',
   'django.core.context_processors.media',
   'django.core.context_processors.static',
   'django.core.context_processors.tz',
   'django.contrib.messages.context_processors.messages',
   'social.apps.django_app.context_processors.backends',
   'social.apps.django_app.context_processors.login_redirect',
)

AUTHENTICATION_BACKENDS = (
   'social.backends.facebook.FacebookOAuth2',
   'social.backends.google.GoogleOAuth2',
   'social.backends.twitter.TwitterOAuth',
   'django.contrib.auth.backends.ModelBackend',
)

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'your secret id'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'your secret key'

project_name/urls.py

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

Als nächstes bearbeiten wir die Vorlage. Dieses Mal ersetzen wir die Anmeldung / Benutzerregistrierung auf dem Verwaltungsbildschirm durch die Google-Authentifizierung.

Erstellen Sie zunächst einen Anmeldebildschirm für den Verwaltungsbildschirm und überschreiben Sie ihn mit dem vorhandenen.

Erstellen Sie "templates / admin / login.html" und wählen Sie [diese Datei] aus (https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/login.html). Bitte kopieren und einfügen. Schreiben Sie den Inhaltsblock in der kopierten Datei neu. (Ursprünglich scheint es login.html nicht ganz, sondern teilweise zu überschreiben, aber ich weiß es nicht, also überschreibe ich das Ganze ...)

{% block content %}
  <center>
  {% if user and not user.is_anonymous %}
     <h1><a href="{% url 'auth:logout' %}?next={{ request.path }}">Logout</a></h1>
  {% else %}
      <h1><a href="{% url 'social:begin' 'google-oauth2' %}?next={% url 'admin:index' %}">Login with Google</a></h1>
  {% endif %}
      </center>
{% endblock %}

Das ist alles für das Verfahren. Lassen Sie es uns tatsächlich ausführen und überprüfen. Unten finden Sie eine Liste von Punkten, die leicht zu stolpern sind.

login.html kann nicht überschrieben werden

Ungültiges ~ wird durch die Google-Authentifizierung angezeigt

Das ist es. Da ich es nach dem Erstellen geschrieben habe, kann es zu Auslassungen kommen. Ich würde mich freuen, wenn Sie mich wissen lassen könnten, wenn Sie etwas bemerken.

Andere

Bestätigen Sie anhand der E-Mail-Adresse

Fügen Sie der Datei settings.py Folgendes hinzu, und es ist in Ordnung SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS = ['email address'] Fügen Sie Folgendes hinzu, wenn Sie mit der Domain der E-Mail-Adresse anstelle der E-Mail-Adresse validieren möchten SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS = ['domain']

Aktivieren Sie standardmäßig Mitarbeiter und Superuser

Es ist schwierig, sich sozial beim Administrator anzumelden und nichts zu sehen. Deshalb wollte ich von Anfang an is_staff und is_superuser aktivieren, also werde ich der Pipeline meine eigene Funktion hinzufügen. Dieses Mal werden wir is_staff und is_superuser des erstellten Benutzers neu schreiben.

project_name/custome_pipeline.py

def set_superuser(user, *args, **kwargs):
    user.is_staff = True
    user.is_superuser = True
    user.save()

Fügen Sie danach Folgendes zu settings.py hinzu. Der Punkt ist, den erstellten Prozess nach create_user einzufügen

SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    'social.pipeline.social_auth.social_user',
    'social.pipeline.user.get_username',
    'social.pipeline.user.create_user',
    'project_name.custom_pipeline.set_superuser',  #Pfad zur vorbereiteten Funktion
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details'
)

Referenz

Recommended Posts

Authentifizieren Sie Google mit Django
Internationalisierung mit Django
CRUD mit Django
Django 1.11 wurde mit Python3.6 gestartet
Laden Sie Dateien mit Django hoch
Entwicklungsverdauung mit Django
PDF mit Django ausgeben
Markdown-Ausgabe mit Django
Verwenden Sie Gentelella mit Django
Twitter OAuth mit Django
Erste Schritte mit Django 1
Mail mit Django senden
Datei-Upload mit Django
Verwenden Sie WENIGER mit Django
Pooling mechanisieren mit Django
Verwenden Sie MySQL mit Django
Django ab heute
Erste Schritte mit Django 2
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Fangen Sie mit Django an! ~ Tutorial ⑤ ~
Testen Sie eingebettete Software mit Google Test
Minimale Konfigurations-Website-Umgebung mit Django
Erstellen Sie eine API mit Django
Versuchen Sie Google Mock mit C.
Mach Django mit CodeStar (Python3.8, Django2.1.15)
Stellen Sie Django serverlos mit Lambda bereit
Python3 + Django ~ Mac ~ mit Apache
Lernen Sie Python mit Google Colaboratory
Erste Schritte mit Python Django (1)
Erstellen Sie eine Homepage mit Django
Über das Lernen mit Google Colab
Fangen Sie mit Django an! ~ Tutorial ④ ~
Erste Schritte mit Python Django (4)
Erstellen Sie eine Webanwendung mit Django
Erste Schritte mit Python Django (3)
Kombinieren Sie Fast API mit Django ORM
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
Verwenden Sie Django, um Tweet-Daten zu speichern
Führen Sie eine AES-Verschlüsselung mit DJango durch
Einführung in Python Django (6)
Kombiniere zwei Bilder mit Django
Hängen Sie Google Drive mit google-drive-ocamlfuse ein
Greifen Sie mit Python auf Google Drive zu
Erste Schritte mit Django mit PyCharm
Probieren Sie OpenCV mit Google Colaboratory aus
Echtzeit-Web mit Django-Kanälen
Übersetzen - Hilfe von PHP_UML mit Google Übersetzung
Doppelte Submit-Unterdrückung mit Django
Django REST Framework mit Vue.js
Verwenden Sie prefetch_related bequem mit Django
Erste Schritte mit Python Django (5)
Melden Sie sich mit dem Django Rest Framework an
Qiita API Oauth mit Django
Testgetriebene Entwicklung mit Django Teil 3
Laden Sie die Django-Shell mit ipython neu
Schritte zur Entwicklung von Django mit VSCode
Testgetriebene Entwicklung mit Django Teil 4
Laden Sie ein Django-Modul mit einem Interpreter
Richten Sie mit Django ein soziales Login ein