WordPress 和 Django 之间的单点登录
Single sign-on between WordPress and Django
我在 Apache Ubuntu 16.04 服务器上有两个 Web 应用程序:
- WordPress 4.8.1 网站
- Django 1.11 应用程序(带有 django-rest-framework)
我想安装单点登录服务 (SSO)。例如,用户登录 WordPress,然后当他访问 Django 网站时,他已经连接。实际上我没有发现任何关于 WordPress 和 Django 之间的 SSO 的信息。你知道怎么做吗?
使用下面的插件实现 JWT token 在 wordpress 网站中进行身份验证
https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/
wordpress网站登录成功后重定向到Django网站,Django注销时。在 wordpress 中销毁会话 viceversa
我用过这个https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/
用于 WP 登录
我为 auth_user(Django) 和 wp_users(Wordpress) 创建了两个插入函数
安装库
pip install passlib
serializer.py(我使用的是 django rest_framework jwt)
from passlib.hash import md5_crypt
from django.contrib.auth.hashers import make_password
注册序列化函数(auth_user)
pwd_hash = make_password(password)
usrobj = User(username = username, email = email, is_active=True, password = pwd_hash)
usrobj.save()
重复注册 Wordpress 数据库table
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()
确保你 运行 假迁移你的 wp tables
这就是如何让 table 成为模型
python manage.py inspectdb > models.py
它应该看起来像这样:(我只是添加了一些 null 和空白)
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'
我在 Apache Ubuntu 16.04 服务器上有两个 Web 应用程序:
- WordPress 4.8.1 网站
- Django 1.11 应用程序(带有 django-rest-framework)
我想安装单点登录服务 (SSO)。例如,用户登录 WordPress,然后当他访问 Django 网站时,他已经连接。实际上我没有发现任何关于 WordPress 和 Django 之间的 SSO 的信息。你知道怎么做吗?
使用下面的插件实现 JWT token 在 wordpress 网站中进行身份验证 https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/
wordpress网站登录成功后重定向到Django网站,Django注销时。在 wordpress 中销毁会话 viceversa
我用过这个https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/ 用于 WP 登录
我为 auth_user(Django) 和 wp_users(Wordpress) 创建了两个插入函数 安装库
pip install passlib
serializer.py(我使用的是 django rest_framework jwt)
from passlib.hash import md5_crypt
from django.contrib.auth.hashers import make_password
注册序列化函数(auth_user)
pwd_hash = make_password(password)
usrobj = User(username = username, email = email, is_active=True, password = pwd_hash)
usrobj.save()
重复注册 Wordpress 数据库table
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()
确保你 运行 假迁移你的 wp tables
这就是如何让 table 成为模型
python manage.py inspectdb > models.py
它应该看起来像这样:(我只是添加了一些 null 和空白)
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'