Drupal忘记管理密码重置管理密码的四种方法(Drupal8/Drupal9)

admin 2019-05-05 drupal 密码 869

一、Drush重置drupal密码(推荐方式)

Display a one time login link for the given user account (defaults to uid 1).

命令:drush user-login 或 drush uli

二、DrupalConsole方法(推荐方式)

方法1:创建一个一次性登录地址

drupal user:login:url

方法2:重置密码

drupal user:password:reset

如果尝试密码次数太多会锁定,清除登录失败记录

drupal user:login:clear:attempts

三、使用代码来重置密码:

方法1(推荐):参考https://www.drupal.org/node/2778219

1. 新建php文件reset-password.php,并将以下代码写入后保存:

use Drupal\Core\DrupalKernel;
use Symfony\Component\HttpFoundation\Request;

// Boot Drupal.
$autoloader = require __DIR__ . '/autoload.php';

$request = Request::createFromGlobals();
$kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod', FALSE);
$kernel->boot();

// Get password hasher service.
$password_hasher = $kernel->getContainer()->get('password');

// Hash password.
if (isset($_GET['pass']) && !empty($_GET['pass'])) {
 $newhash =  $password_hasher->hash($_GET['pass']);
}
else {
  die('请加 "?pass=PASSWORD" 到 URL 的尾部, PASSWORD 是你想写入的密码');
}

// Update user password.
$updatepass = Drupal::database()->update('users_field_data')
  ->fields(array(
    'pass' => $newhash,
// 如果忘记了管理员的用户名, 请更改下2句的设定值
//  'name' => 'admin',
//  'mail' => 'yourmail@example.com'
  ))
  ->condition('uid', '1', '=')
  ->execute();

// Clean user 1 cache.
Drupal::cache('entity')->delete('values:user:1');

print "管理员密码已更新, 请删除本文件并立刻到Drupal后台修改密码!";

2.把该脚本文件复制到 Drupal 8 根目录下

3.打开浏览器访问该文件, 如 : http://你的网址/reset-password.php?pass=你的新密码。

4.用新密码登录Drupal8,修改密码,之后立刻删除reset-password.php这个文件(十分重要!)

方法2:在index.php中加入如下代码即可:

use Drupal\user\Entity\User;
 
// Setup the user fields.
$user_fields = array(
        'name' => 'admin',
        'mail' => 'admin@admin.com',
        'pass' => '111111',
        'status' => 1,
        'init' => 'admin@admin.com',
        'roles' => 'authenticated user',
);
// Create a new user.
$account = User::create($user_fields);
$account->save<span style="font-family: Arial, Helvetica, sans-serif;">();</span>

就可以用新生成的密码替换管理员密码。使用完毕不要忘记恢复文件。

四、修改数据库设置密码

1. 清空缓存表,清空flood表。Drupal 默认如果试5次登录均未成功,则6小时之内不能登录。这些信息记录在flood表中。所以解决的办法就是手动清空flood表。

2. 找到表users,找到里面的用户名对应的密码框。可以直接复制其他用户的密码到忘记密码的账户上面。还可以直接复制(这段加密代码明文是:123456,稍后用这个密码登录即可):

$S$DRIG34Wb.GK3EKVBYBYN6rO.uyMkf1re4u8f/FjDRmGBRY30x3S4