.png)
Wenn Sie sich über eine Seite mit einfacher Authentifizierung anmelden, wird der Benutzername, mit dem Sie sich authentifiziert haben, irgendwo gespeichert (auf dem Server- oder Client-Rechner), vielleicht in einer Umgebungsvariable?
Hintergrund: Ich habe eine allgemeine Webverwaltungsseite für einen E-Mail-Server und möchte wissen, wer was tut. Wenn sich ein Benutzer erfolgreich über die Basisauthentifizierung anmeldet, möchte ich ihn irgendwie identifizieren und seine Aktionen protokollieren können. So kann ich jedes Mal, wenn eine Anfrage gesendet wird, eine Protokolldatei schreiben. Das grundlegende Format wäre:
$username ran a $function against $useraccount
Wenn also ein Benutzer die Berechtigungen einer anderen Person geändert hat, zB:
Admin-Bob ran a permission change against User-Scott
Wenn also Fehler auftreten, kann ich in der Protokolldatei leicht nachvollziehen, welche Aktionen zur Ursache geführt haben. Ich habe %ENV
vergeblich versucht, den Hash zu überprüfen. Irgendwelche Ideen?
Ich möchte nicht wirklich auf PHP-ähnliche Sitzungen eingehen, da dies bedeuten würde, dass ich meine grundlegende Authentifizierung aufgeben müsste, die mir bereits ein hohes Maß an Kontrolle gibt. Wenn ich etwas mit Sitzungen programmieren müsste, müsste ich ein System implementieren, um Benutzer nach maximaler Anzahl von Versuchen usw. zu blockieren, was ich nicht wirklich programmieren möchte. Ich denke, dies ist besser auf Serverfehler ausgerichtet, da es eher auf Apache als auf die Programmiersprache zutrifft. Sitzungen können in einer Vielzahl von Sprachen durchgeführt werden.
Antwort1
Der Benutzername ist in der Umgebungsvariable verfügbar REMOTE_USER
.
Dies funktioniert für nahezu jede Authentifizierungsmethode, falls Sie jemals Digest- oder vielleicht sogar Kerberos-Authentifizierung verwenden sollten.
Antwort2
Shtééf hat es bereits erwähnt $ENV{'REMOTE_USER'}
, aber wenn Sie CGI.pm verwenden, wird es auch von der remote_user()
Funktion zurückgegeben.
my $cgi = CGI->new();
print $cgi->remote_user(); # Prints user name
Antwort3
Es handelt sich eigentlich um eine Servervariable und nicht um eine Umgebungsvariable.
PHP_AUTH_USER und AUTH_USER sollten beide funktionieren.