Einmaliges Anmelden zwischen WordPress und Django

Lesezeit: 2 Minuten

Ich habe zwei Webanwendungen auf Apache Ubuntu 16.04 Server:

  1. WordPress 4.8.1-Website
  2. Django 1.11-Anwendung (mit Django-Rest-Framework)

Ich möchte einen Single-Sign-On-Dienst (SSO) installieren. Beispielsweise meldet sich der Benutzer bei WordPress an und wenn er dann zur Django-Website geht, ist er bereits verbunden. Eigentlich finde ich nichts über SSO zwischen WordPress und Django. Hast du eine Idee, wie man es macht?

Ich habe das benutzt https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/
für WP-Login

Ich habe zwei Einfügefunktionen für die Installationsbibliotheken auth_user (Django) und wp_users (WordPress) erstellt

pip passlib installieren

serializer.py (ich verwende django rest_framework jwt)

aus passlib.hash import md5_crypt

aus django.contrib.auth.hashers import make_password

Registrierungsserialisiererfunktion (auth_user)

pwd_hash = make_password(password) 
usrobj = User(username = username, email = email, is_active=True, password = pwd_hash) 
usrobj.save()

doppelte Registrierung für WordPress dbtable

wph = md5_crypt.hash(password)
wpusrobj = WpUsers(user_login = str(username), user_pass = str(wph), user_nicename="", user_email = str(email), user_url="", user_activation_key='', display_name="", user_status=0)
wpusrobj.save()

Stellen Sie sicher, dass Sie eine gefälschte Migration Ihrer WP-Tabellen ausführen

So bekommen Sie den Tisch zum Modellieren

python manage.py inspectdb > models.py

es sollte so aussehen: (ich füge nur ein paar Nullen und Leerzeichen hinzu)

class WpUsers(models.Model):
    id = models.BigAutoField(db_column='ID', primary_key=True)  # Field name made lowercase.
    user_login = models.CharField(max_length=60)
    user_pass = models.CharField(max_length=255)
    user_nicename = models.CharField(max_length=50, blank=True, null=True)
    user_email = models.CharField(max_length=100)
    user_url = models.CharField(max_length=100, blank=True, null=True)
    user_registered = models.DateTimeField(("Created Date"), default=timezone.now, blank=True, null=True)
    user_activation_key = models.CharField(max_length=255, blank=True, null=True)
    user_status = models.IntegerField(null=True, blank=True)
    display_name = models.CharField(max_length=250, blank=True, null=True)

    class Meta:
        managed = False
        db_table="wp_users"

Verwenden Sie das folgende Plugin, um das JWT-Token für die Authentifizierung auf der WordPress-Website zu implementieren
https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/

Nach erfolgreicher Anmeldung auf der WordPress-Website werden Sie zur Django-Website weitergeleitet, wenn Sie sich in Django abmelden. Zerstöre die Sitzung in WordPress und umgekehrt

  • Vielen Dank für Ihre Antwort. Wenn ich dieses Plugin in WordPress installiere, sollte es eine Token-Sitzung erstellen, aber wie kann ich auf Django feststellen, welches Benutzerkonto damit verbunden ist?

    – B. Mike

    29. August 2017 um 9:59 Uhr


  • Token erstellen nach Benutzername/Passwort.

    – Gnanasekaran Loganathan

    29. August 2017 um 10:13 Uhr

1357430cookie-checkEinmaliges Anmelden zwischen WordPress und Django

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy