创建成功登录的日志

时间:2012-12-18 12:33:53

标签: drupal drupal-7

我需要创建一个成功登录并拒绝登录的日志。我必须保存尝试访问的用户。

我不知道hook_user_login是否是执行此任务的正确方法。

感谢任何调查指导。谢谢:))

1 个答案:

答案 0 :(得分:4)

仅当用户成功登录时才会调用

hook_user_login()

您应该实施的钩子是hook_watchdog()

function hook_watchdog(array $log_entry) {
  switch ($log_entry['message']) {
    case 'Login attempt failed for %user.':
      // Somebody tried logging in as $log_entry['variables']['%user'],
      // and failed.
      break;

    case 'Session opened for %name.':
      // The login for $log_entry['variables']['%name'] was successful.
      break;
  }
}

请注意:

  • $log_entry['variables']['%user'](登录失败时)和$log_entry['variables']['%name'](登录成功时)都是用户名,而不是用户对象。

  • 登录成功后,$log_entry['user']是用户正确登录的用户对象,`$ log_entry ['uid']是用户ID。

  • 其他可能有用的变量是:

    • $log_entry['request_uri']
    • $log_entry['referer']
    • $log_entry['ip']
    • $log_entry['timestamp']
  • Drupal已经在admin / reports / dblog中记录了这些事件;你只需要按类型(用户)过滤它们。

    screenshot

    可能有理由实施hook_watchdog()以保留任何失败/成功登录的日志,但是:数据库日志限制为N个条目(其中N可以是100,1000,10000,100000,1000000 ,基于admin / config / development / logging上的设置,它适用于传递给watchdog()的所有消息;达到限制后,旧邮件将丢失。