WordPress 和 Django 之间的单点登录

B. *_*ike 5 django wordpress single-sign-on

我在 Apache Ubuntu 16.04 服务器上有两个 Web 应用程序:

  1. WordPress 4.8.1 网站
  2. Django 1.11 应用程序(带有 django-rest-framework)

我想要安装单点登录服务 (SSO)。例如,用户登录 WordPress,然后当他访问 Django 网站时,他已经连接了。实际上我没有找到任何关于 WordPress 和 Django 之间 SSO 的信息。您知道该怎么做吗?

小智 5

我用这个https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/ 进行 WP 登录

我为 auth_user(Django) 和 wp_users(Wordpress) 安装库创建了两个插入函数

pip 安装 passlib

serializer.py (我使用 django rest_framework jwt)

从 passlib.hash 导入 md5_crypt

从 django.contrib.auth.hashers 导入 make_password

注册序列化器函数(auth_user)

pwd_hash = make_password(password) 
usrobj = User(username = username, email = email, is_active=True, password = pwd_hash) 
usrobj.save()
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)

确保你运行 fake migrate 你的 wp 表

这就是你如何对表格进行建模

python manage.py inspectdb > models.py
Run Code Online (Sandbox Code Playgroud)

它应该看起来像这样:(我只是添加一些空和空白)

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'
Run Code Online (Sandbox Code Playgroud)


Gna*_*han 4

使用下面的插件实现 JWT 令牌在 WordPress 网站 https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/中进行身份验证

成功登录wordpress网站后重定向到Django网站,当在Django中注销时。销毁 WordPress 中的会话,反之亦然