ProTc: .htaccess Zugriff auf spezielle Seiten

Hallo,

also grundsätzlich komme ich mit .htaccess sehr gut zurecht, funktioniert auch alles, aber ich habe noch ein kleines Problem, ich möchte, dass jeder User eine eigene Seite bekommt.

Das heißt:
User1 loggt sich ein und kommt auf die Seite user1.html
User2 loggt sich ein und kommt auf die Seite user2.html

User1 kann aber nicht auf die Seite von User2 zugreifen ohne gültige Zugangsdaten und umgekehrt.

Wie kann ich das mit .htaccess realisieren?
(Bitte einfache Beschreibung)

Danke

  1. Hallo,

    Sobald sich der User eingeloggt hat, ist die Umgebungsvariable
    $ENV{'REMOTE_USER'}
    mit dem Namen gefüllt.

    In das geschützte Verzeichnis wird dann eine index.shtml gelegt, in der mit <!--#exec cgi="pfad-zum/skript.pl" --> ein Skript ausgeführt wird, das diese Variable abfragt.

    Danach mit dem Perl-Skript einfach nur noch die Zuordnung des
    eingeloggten Users zur darauf angezeigten Seite, und diese dann z.B. mit
    print "Location: http://www.meinedomain.de/verzeichniss/seite.html\n\n";
    oder einer JavaScript- oder Meta-Weiterleitung ausgeben.

    Ich hoffe das war einfach genug.....und die Vorgehensweise an sich richtig. So habe ich das bei mir zumindest gelöst, und es funktioniert.

    Viel Spaß,

    Hackie

  2. Hallo ProTc!

    User1 kann aber nicht auf die Seite von User2 zugreifen ohne gültige Zugangsdaten und umgekehrt.
    Wie kann ich das mit .htaccess realisieren?

    Nur mit .htaccess nicht (wenn doch, korrigiert mich bitte). 2 Varianten als Beispiel:

    1. Variante mit CGI:
    Du schützt ein CGI-Script per .htaccess. Wird dieses Script aufgerufen, wird zunächst mal die Passwortabfrage gemacht, dann, wenn der User authorisiert ist, das Script gestartet. Im Script fragst Du die Variable  $ENV{'REMOTE_USER'} ab und verzweigst zu der userspezifischen Seite. Diese Seite sollte in einem extra für den User eingerichtetem Verzeichnis liegen und wiederum eine .htaccess enthalten, die auf eine .htpasswd zeigt, in der nur username:pwd von genau dem einen User drinsteht. Da der User schon authorisiert ist, bekommt er seine Seite trotz anderer .htaccess ohne 2. PW-Abfrage zu sehen. Mit der .htaccess im Userverzeichnis verhinderst Du, das andere User die Seite direkt aufrufen.
    Andere Variante: Du baust die UserSeite(n) in Deinem Script je nach User dynamisch zusammen.

    (Weil ich gerade Lust dazu habe, ein einfaches Script.) Es leitet zu einer index.htm im entsprechenden Userverzeichnis weiter:

    #!/usr/bin/perl
    $new_location="/pfad/zu/user/seiten/$ENV{'REMOTE_USER'}/index.htm";
    &not_allowed unless $ENV{'REMOTE_USER'};
    print "Status: 302 Found\n";
    print "Location: $new_location\n";
    print "URI: <$new_location>\n";
    print "Content-type: text/html\n\n";
    print "<html><body>The page you requested can be found <a href="$new_location">here</a>.</body></html>";

    wenn kein Remote User angegeben, sicher ist sicher ;-)

    sub not_allowed {
    print "Content-type: text/html\n\n";
    print "<html><head><title>Access denied</title></head>";
    print "<body>";
    print "<H1>Access denied</H1>";
    print "You are not authorized to read this site!<P>";
    print "Bye!";
    print "</body>";
    print "</html>";
    exit;
    }

    2. Variante ohne CGI (Voraussetztung: SSI):
    Du legts in Dein geschütztes Verzeichnis eine index.shtml mit folgendem Inhalt. Damit wird sofort weitergeleitet. Für User, deren Browser die Weiterleitung nicht unterstützt, gibts noch einen Link auf der Seite.

    <html>
    <head>
    <meta http-equiv="refresh" content="0;URL=http://www.domain.de/dein/pfad/<!--#echo var="REMOTE_USER"-->/index.htm">
    </head>
    <body>
    The page you requested can be found
    <a href = "http://www.domain.de/dein/pfad/<!--#echo var="REMOTE_USER"-->/index.htm">here</a>.
    </body>
    </html>

    Allerdings sollte auch hier in den Userverzeichnis eine entsprechende .htaccess liegen (Grund siehe oben).

    Gruß Frank

    1. Hallo ProTc!

      Irgendwie hats Forumsscript doch code interpretiert (sollte es aber nicht laut http://www.teamone.de/selfaktuell/forum/forumsfaq_2.htm#a4)

      ¬_allowed unless $ENV{'REMOTE_USER'};

      Die Zeile soll so heissen:
      and_not_allowed unless $ENV{'REMOTE_USER'};

      ersetzte 'and_' durch <shift> + 6

      Gruß Frank

    2. Hallo Frank,

      1. Variante mit CGI:
        Du schützt ein CGI-Script per .htaccess. Wird dieses Script aufgerufen, wird zunächst mal die Passwortabfrage gemacht, dann, wenn der User authorisiert ist, das Script gestartet. Im Script fragst Du die Variable  $ENV{'REMOTE_USER'} ab und verzweigst zu der userspezifischen Seite. Diese Seite sollte in einem extra für den User eingerichtetem Verzeichnis liegen und wiederum eine .htaccess enthalten, die auf eine .htpasswd zeigt, in der nur username:pwd von genau dem einen User drinsteht. Da der User schon authorisiert ist, bekommt er seine Seite trotz anderer .htaccess ohne

      2. PW-Abfrage zu sehen. Mit der .htaccess im Userverzeichnis verhinderst Du, das andere User die Seite direkt aufrufen.

      Das funktioniert nach, meiner Erfahrung, leider nicht, siehe
      < http://www.teamone.de/selfhtml/sfarchiv/2000_3/t18040.htm#a91528>

      Andere Variante: Du baust die UserSeite(n) in Deinem Script je nach User dynamisch zusammen.

      Das dürfte funktionieren, ist aber IMHO sehr einschränkend.

      1. Variante ohne CGI (Voraussetztung: SSI):
        Du legts in Dein geschütztes Verzeichnis eine index.shtml mit folgendem Inhalt. Damit wird sofort weitergeleitet. Für User, deren Browser die Weiterleitung nicht unterstützt, gibts noch einen Link auf der Seite.

      s.o.

      Ich bin mittlerweile auf ein Login-Skript ausgewichen und bisher recht zufrieden. Zu finden, beispielsweise unter

      < http://cgi.resourceindex.com/Programs_and_Scripts/Perl/Password_Protection/>

      Gruß Frank

      Gruß
         Kai

      1. Hallo Kai,

        Das funktioniert nach, meiner Erfahrung, leider nicht, siehe

        Ich habe genau diese Methode bis vor ca. einem 3/4 Jahr eingesetzt. Es ging! Möglicherweise ist das abhängig von der Serverkonfiguration. Leider ist der Server nicht mehr verfügbar und ob ich noch irgendwo ein Backup der Seiten habe? Ich werde mal suchen, wenn ichs gefunden habe und es reproduzieren kann, melde ich mich mal bei Dir.

        Schönes Wochenende,
        Gruß Frank

        1. Hallo Frank,

          Hallo Kai,

          Das funktioniert nach, meiner Erfahrung, leider nicht, siehe
          Ich habe genau diese Methode bis vor ca. einem 3/4 Jahr eingesetzt. Es ging! Möglicherweise ist das abhängig von der Serverkonfiguration. Leider ist der Server nicht mehr verfügbar und ob ich noch irgendwo ein Backup der Seiten habe? Ich werde mal suchen, wenn ichs gefunden habe und es reproduzieren kann, melde ich mich mal bei Dir.

          Das waere nett und wuerde mir ein ganzes Stueck weiterhelfen.

          Schönes Wochenende,
          Gruß Frank

          Dir das gleiche
             Kai

  3. Hi,

    User1 loggt sich ein und kommt auf die Seite user1.html
    User2 loggt sich ein und kommt auf die Seite user2.html
    User1 kann aber nicht auf die Seite von User2 zugreifen ohne gültige Zugangsdaten und umgekehrt.
    Wie kann ich das mit .htaccess realisieren?

    ich mache das so, daß jeder Benutzer ein eigenes *Verzeichnis* bekommt.
    In jedem Benutzerverzeichnis liegt eine .htaccess, welche den Zugang nur für diesen Benutzer erlaubt ("require user <username>").
    Im übergeordneten Verzeichnis (dort, wo der Benutzer sich ursprünglich angemeldet hat), liegt eine .htaccess, welche allen Benutzern einer ebenfalls definierten Gruppe den Zugriff erlaubt ("require group <gruppenname>").
    Alle diese Dateien beziehen sich auf denselben Realm und auf dieselben Dateien für Benutzer- und Gruppendefinitionen.

    mfG - Michael