我们希望在 SimpleSAMLPhp 的数据库中跟踪用户的登录/注销时间,我们在 SSO 登录过程中将其用作 IDP。 我被告知,一旦用户在 IDP 上进行身份验证,就在 MySql 数据库中插入新的日志记录,并在他注销后更新相同的条目,并且我必须在 simplesamlphp 文件中进行更改。
我发现 SimpleSAMLPhp 有 Statistics module,它可以从指定的日志文件中读取数据并显示统计信息。但我不想与日志文件交互。
读取日志文件或在 SimpleSAMLPhp 文件中添加代码更改以插入写入登录/注销事件的日志记录有什么更好的解决方案,有人可以给我建议吗?
示例:
'mysqldbverify' => [
'sqlauth:PasswordVerify',
'dsn' => 'mysql:host=localhost;port=3306;dbname={mydbname}’,
'username' => ‘{mydbuser}’,
'password' => ‘{mydbpassword}’,
'passwordhashcolumn' => 'passwordhash',
'username_regex' => '/^[a-z0-9\@\-\.\_]+$/', // quick check to keep bad at bay
'query' => ['SELECT `users`.`login` AS uid, `users`.`password` AS passwordhash, `users`.`login` AS email FROM `users` WHERE `users`.`enabled` AND NOT `users`.`login_disabled` AND `users`.`login`= :username',
'SELECT `roles`.`role` as groupName FROM `users` INNER JOIN `user_roles` ON `user_roles`.`email` = `users`.`email` INNER JOIN `roles` ON `roles`.`role_id` = `user_roles`.`role_id` WHERE `users`.`enabled` AND NOT `users`.`login_disabled` AND `roles`.`enabled` AND `user_roles`.`enabled` AND `users`.`login`= :username UNION SELECT `roles`.`role` as groupName FROM `roles` where `roles`.`isdefault` = 1',
'UPDATE `users` SET `last_login` =\'' . date("Y-m-d H:i:s") . '\' WHERE `users`.`login`= :username',
],
],
更多信息:https://simplesamlphp.org/docs/contrib_modules/sqlauth/sql.html
此方法不允许记录注销时间,因为这些查询不会在注销时运行。