本指南涵盖 WordPress 身份验证——访问您的站点、管理登录会话以及重置密码。

访问登录页面

WordPress 登录页面位于您站点的根目录中的 wp-login.php:

https://example.com/wp-login.php

在未登录时访问 /wp-admin/ 会自动重定向到登录页面。

登录表单字段

  • 用户名或电子邮件地址:输入您的用户名或与您的账户关联的电子邮件
  • 密码:您的账户密码(区分大小写)
  • 记住我:将您保持登录状态的时间延长至 14 天,而不是默认的会话长度

登录 Cookie

WordPress 使用 Cookie 来管理身份验证。了解这些有助于故障排除和安全配置。

Cookie用途
wordpress_[hash]身份验证 Cookie(用于不安全/非 HTTPS 登录)
wordpress_logged_in_[hash]向前端指示已登录状态
wordpress_sec_[hash]安全身份验证 Cookie(用于 HTTPS 登录)

注意: wordpress_sec_[hash] Cookie 在您通过安全连接(HTTPS)登录时使用,所有站点都强烈建议这样做。不安全登录(HTTP)容易受到凭据窃取攻击,应避免使用。

默认过期时间:2 天(48 小时)。当勾选记住我时,Cookie 会持续 14 天。

当 WordPress 需要检查身份验证 Cookie 时,它会使用 wp_validate_auth_cookie()。该函数验证 Cookie、检查其是否已过期、验证 Cookie 哈希值,并在 Cookie 有效时返回用户 ID。

Cookie 配置

更改 Cookie 过期时间需要使用 auth_cookie_expiration 过滤器。将其添加到您的主题的 functions.php 或自定义插件中:

add_filter( 'auth_cookie_expiration', 'custom_cookie_expiration', 10, 3 );

function custom_cookie_expiration( $length, $user_id, $remember ) {
    if ( $remember ) {
        return 30 * DAY_IN_SECONDS; // "记住我"被勾选时为 30 天
    }
    return 2 * DAY_IN_SECONDS; // 标准登录为 2 天(默认)
}

Cookie 域名可以在 wp-config.php 中设置以支持子域共享:

define( 'COOKIE_DOMAIN', '.example.com' );

故障排除登录问题

"Cookie 被阻止或不支持"

当 WordPress 无法设置测试 Cookie (wordpress_test_cookie) 或身份验证 Cookie 时会出现此错误:

  • 浏览器设置:确保已为您的站点启用 Cookie
  • 插件冲突:暂时禁用插件进行测试
  • Cookie 域名不匹配:验证 COOKIE_DOMAIN 是否与您的站点 URL 匹配
  • 混合内容:确保您的站点始终使用 HTTPS
  • 服务器缓存:将 wp-login.php 和基于 Cookie 的会话排除在页面缓存之外

登录重定向循环

如果输入凭据后登录页面不断重新加载:

  1. 清除您站点的浏览器 Cookie
  2. 检查 wp-config.php 中的 WP_HOME 和 WP_SITEURL 值是否正确
  3. 检查数据库 options 表中的 siteurl 和 home 值
  4. 暂时重命名您的 plugins 文件夹以排除插件冲突

"重定向次数过多"

通常由冲突的站点 URL 设置、HTTPS 设置或代理配置引起。请检查:

  • wp-config.php 中冲突的 WP_HOME 和 WP_SITEURL 值
  • 数据库 options 表中不正确的 siteurl 和 home 值
  • 切换到 SSL 后数据库中混合了 http://` 和https://` URL
  • CDN、DNS 代理、Web 主机代理、Nginx 或 Apache 中冲突的 SSL 或重定向设置

在故障排除期间,您可以在 wp-config.php 中强制使用预期的 URL:

// 添加到 wp-config.php 以强制正确的 URL
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );

如果站点已在域之间移动或从 HTTP 移动到 HTTPS,请在备份后运行数据库搜索替换。WP-CLI 的 wp search-replace 命令可以更新存储的 URL,--dry-run 标志可以在写入数据库之前预览更改。

重置您的密码

本节涵盖重置 WordPress 密码的方法,从标准恢复到高级技术方法。

标准密码恢复

如果您忘记了 WordPress 密码,请使用登录屏幕上的忘记密码?链接。WordPress 将向与您的账户关联的地址发送密码重置电子邮件。

这是最简单且安全的方法,当:
– 您有权访问账户的电子邮件地址
– 站点的电子邮件功能正常运行时

技术密码重置方法

当标准恢复不可用时,管理员可以使用以下方法重置密码。WP-CLI 是推荐的方法,因为它是最安全且最直接的方法。

使用 WP-CLI(推荐)

WP-CLI 提供了一种安全的命令行方法来重置密码,而无需直接修改数据库表。

使用 wp user update 设置特定密码。 --prompt=user_pass 标志会提示输入密码,而不是将其暴露在您 shell 的历史记录中:

wp user update USERNAME --prompt=user_pass

使用 wp user reset-password 生成新的随机密码:

wp user reset-password USERNAME --show-password

这会生成一个新密码并发送电子邮件通知用户其密码已更改。电子邮件中不包含新密码。管理员可以使用 --show-password 选项在更改后显示新密码,如果需要单独与用户共享。

使用 --show-password 需谨慎。它以纯文本形式打印新密码,可能会在终端输出、日志、屏幕截图或共享支持会话中暴露。

有关其他选项,请参阅 WP-CLI 用户命令参考。

使用 phpMyAdmin

如果您可以通过 phpMyAdmin 访问数据库:

  1. 打开 phpMyAdmin 并选择您的 WordPress 数据库
  2. 导航到 wp_users 表(您的前缀可能不同)
  3. 点击要修改的用户行的编辑
  4. 在 user_pass 字段中:
    • 从函数下拉菜单中选择MD5
    • 在值字段中输入您的新密码
  5. 点击去保存

选择MD5对于此手动重置方法是必需的。WordPress 存储哈希密码,因此如果不选择哈希函数而直接将纯文本输入到 user_pass 中,将不会创建可用的密码。在下一次成功登录后,WordPress 会自动用更强的哈希替换临时 MD5 哈希。

使用 MySQL 命令行

直接在数据库中更新密码风险很高,应仅由经验丰富的数据库管理员执行。首先备份数据库,验证表前缀,并确保您正在更新预期的用户。

连接到您的数据库并运行:

UPDATE wp_users 
SET user_pass = MD5('new_password') 
WHERE user_login = 'admin';

将 wp_users 替换为您的实际表前缀,new_password 替换为您想要的密码,admin 替换为用户名。

注意: MD5 方法适用于初始登录。WordPress 将在下次登录时自动使用更强的算法重新哈希密码。

其他资源