Wordpress存储用户身份验证数据的方式有哪些细节?

时间:2009-06-29 15:35:21

标签: authentication wordpress passwords credentials

首先,让我来定义最终目标:

我想使用Wordpress(2.8版)来管理网站的身份验证数据/凭据和访问控制。 Wordpress将用于大部分网站,但有些页面将在Wordpress环境之外构建。这些页面应该能够使用存储在Wordpress数据库中的用户身份数据作为参考来做出自己的访问决策。

所以,问题是:

Wordpress究竟如何在其数据库中存储用户身份验证数据?


这个答案的第一部分很简单,在Wordpress数据库中,有一个表保存主要用户数据。我相信这个表的默认名称是“wp_users”,但可以根据Wordpress的设置方式进行更改。该表包含“user_login”和“user_pass”字段,分别包含用户名和密码数据。

“user_login”只是一个纯文本字段,因此很容易访问,但密码是盐渍和散列的。这导致了第一件事仍然需要确定:Wordpress用于生成存储在“user_pass”中的字符串的salting和散列过程是什么?

保持开放的另一部分是Wordpress存储其“角色”的地方/方式。在我的安装中,这些角色默认为:管理员,编辑,作者,贡献者和订阅者。我没看到的是这些角色如何与个人用户相关联。此外,这些角色可以改变吗?


因此,回顾一下,真正的问题分为三个部分:

1)Wordpress使用什么方法将用户的纯文本密码转换为存储在“wp_users”数据库表的“user_pass”列中的字符串?

2)个人用户与各自的Wordpress“角色”之间的链接存储在哪里?

3)可以修改Wordpress中的“角色”以更改其名称和/或添加/删除它们吗?


注意:我意识到另一种方法是让非Wordpress页面检查Wordpress cookie以确定访问权限。我将按照这些方式创建另一个问题,但是出于这个问题的目的,重点是非Wordpress页面如何利用实际的Wordpress数据库来决定访问控制。

1 个答案:

答案 0 :(得分:2)

  1. Wordpress使用Portable PHP password hashing framework。另请参阅此问题:What type of hash does WordPress use?
  2. 默认情况下,此关联位于wp_usermeta密钥
  3. 下的wp_user_level表中
  4. 不是没有插件(或没有编辑Wordpress的代码或数据库编辑)
  5. 您可能希望查看bbPress的代码,因为它将共享Wordpress的用户数据库。