Guest pietda ich einen logout auf meine Webseite machen will muss ich nun auch ein login per Script implementieren.
"Zitat: ohne login auch kein logout möglich" Das ist doch noch immer richtig, oder ??
2013-02-09T17:42:26 GwenDragonSchau dir mal CGI::Session::Auth::DBI an.
1
2
3
4
5
6
7
Lese SessionID (aus oder Cookie, URL)
Wenn SessionID zu Session existiert
Dann
# ist eingeloggt
Führe erlaubte Programmteile aus
Sonst
Rufe Login auf
2013-02-11T21:43:31 topegWas du aber machen kannst:
Wenn ein Nutzer auf ein "Logout"-Button clickt wird eine "Falsche" Loginanfrage Gesendet ("Authentification Required") Der Client verwirft Name und Passwort des letzten Login und fragt beim Nutzer neu nach. Das ist aber nicht 100% zuverlässig, da nicht festgelegt ist was der Client mit dem alten Passwort machen soll. Jedoch verhalten sich die meisten Browser wie beschrieben und löschen das alte Passwort/Name.
print "HTTP/1.1 401 Unauthorized";
print header('HTTP/1.1 401 Unauthorized');
1 2 3 4 5 6 7 8 9 10 11
use strict; use warnings; use CGI; use CGI::Carp qw(fatalsToBrowser); use CGI qw(:cgi); my $cgi = new CGI; print $cgi->header(-nph=>1, -status=>'HTTP/1.1 401 Unauthorized'); exit;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#! /usr/bin/env perl use strict; use warnings; use CGI qw( -nph ) ; my $cgi = CGI->new; if ( $cgi->param('logout') ) { print $cgi->header( -status => '401 Unauthorized', "WWW-Authenticate" => qq~Basic realm="foobar"~, ), $cgi->start_html, 'Goodbye', $cgi->end_html, ; } else { print $cgi->header( 'text/html' ), $cgi->start_html(), $cgi->h1("Success"), $cgi->a({href=>"?logout=1"}, 'logout'), $cgi->end_html, ; }
1
2
3
4
AuthType Basic
AuthName "foobar"
AuthUserFile /var/www/domain/etc/htpasswd
Require user linuxer