我需要创建一个成功登录并拒绝登录的日志。我必须保存尝试访问的用户。
我不知道hook_user_login
是否是执行此任务的正确方法。
感谢任何调查指导。谢谢:))
答案 0 :(得分:4)
您应该实施的钩子是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中记录了这些事件;你只需要按类型(用户)过滤它们。
可能有理由实施hook_watchdog()
以保留任何失败/成功登录的日志,但是:数据库日志限制为N个条目(其中N可以是100,1000,10000,100000,1000000 ,基于admin / config / development / logging上的设置,它适用于传递给watchdog()的所有消息;达到限制后,旧邮件将丢失。