网站内容及实现方式(wordpress如何实现如网易通行证等大站一样的共享用户登录呢?)

优采云 发布时间: 2021-11-21 16:12

  网站内容及实现方式(wordpress如何实现如网易通行证等大站一样的共享用户登录呢?)

  WordPress 为网站 系统提供了相同的数据表结构,这使得在多个WordPress 网站 之间快速共享用户数据成为可能。wordpress是如何实现像网易通等大网站一样的共享用户登录的?您只需要共享需要共享的数据库。我们只需要在这里共享 _user 和 _usermeta 表。以下是完整的实现过程。

  安装网页

  首先准备两个域名和一个web环境。我的测试环境是宝塔。

  主站A

  域名:

  数据库名称:test

  数据库用户:mytest

  数据库用户密码:test123

  数据表前缀:a_

  从B站

  域名:

  数据库名称:test

  数据库用户:mytest

  数据库用户密码:test123

  数据表前缀:b_

  先安装A站,使用上述A站配置信息,安装后安装B站,B站也使用上述信息。注意:为了实现数据共享,我们必须把两个站的数据表放在同一个数据库中,我上面用的test数据库。

  修改wordpress配置

  为了共享用户数据,我们必须将两个站使用的数据表制作成a_user和a_usermeta。或者都用b_user和b_usermeta,我用A为主站,所以需要把B站使用的b_user和b_usermeta数据表改成a_user和a_usermeta数据表。

  打开B站wordpress根目录下的wp_config.php配置文件,在里面添加如下配置:

  define('CUSTOM_USER_TABLE', 'a_users');

define('CUSTOM_USER_META_TABLE', 'a_usermeta');

  配置的两句话重新声明了_user和_usermeta数据表的名称。在这里,将它们更改为需要共享数据的表的名称。我使用的是A站的用户数据。

  至此,你的A站和B站的用户数据共享已经完成,你可以使用A站的用户数据进行注册和登录,但是wordpress在_usermeta表中有用户权限的记录。这一步你的B站是可以用A站的*敏*感*词*登录的,但是不能访问后台,访问会提示用户权限不足。

  自动添加用户权限

  当你完成上述步骤后,你的a_usermeta数据表并没有记录用户对站点B的访问权限,为了让站点A的管理员用户拥有站点B的管理权限,我们需要在a_usermeta数据表中插入以下权限记录:

  INSERT INTO `test`.`a_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '1', 'b_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}');

  这里的说明下,_usermeta数据表中meta_key值为_capabilities的记录项就是记录的用户权限,其前缀代表该权限属于哪个站点。因为我的管理员账号是建站的时候创建的,所以user_id是1,administrator就是管理员权限。有关其他权利,请参阅文章 WordPress 删除用户角色、添加新角色和授予角色能力/权限。

  通过上面的mysql命令插入用户对站点B的权限后,我们就可以正常访问站点B的后台了。注意:记得清理cookies!

  如果你不懂MySQL,也可以用phpmyadmin用鼠标点击a_usermeta数据表中a_capabilities记录前面的复制链接,其中meta_key的值为a_capabilities,phpmyadmin会自动跳转到insert函数并填写对应的值,只需要修改前缀,点击执行即可。

  这里我们使用手动方法授予用户访问站点 B 的权限。我们不能手动为每个用户授予权限。然后我们可以使用下面的代码在注册时自动授予权限。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线