jquery.ajax htaccess autentifizierung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • jquery.ajax htaccess autentifizierung

    Hallo,
    ich hoffe, ich bin hier überhaupt richtig. Seit einiger Zeit suche ich nach einer Möglichkeit zur Authentifizierung zu einem htaccess passwort geschützen Bereich über ein html - formular (also schön gestaltet und so)

    Nun bin ich soweit, dass ich eine ajax und jquery - basierte Lösung gefunden habe. Nur habe ich noch einige Fragen:

    Das Script wurde hier gepostet:

    How to do HTTP Basic Auth in Ajax ? Coders Eye

    PHP-Code:

    Step 1

    First
    get Base64.js from Webtoolkit, and load it on your pageWe need the encode routine from that library.

    Step 2

    Construct your Authorization header like so
    :


    function 
    make_base_auth(userpassword) {
      var 
    tok user ':' pass;
      var 
    hash Base64.encode(tok);
      return 
    "Basic " hash;
    }

    Step 3

    Use it in your Ajax call.


    var 
    auth make_basic_auth('me','mypassword');
    var 
    url 'http://example.com';

    // RAW
    xml = new XMLHttpRequest();
    xml.setRequestHeader('Authorization'auth);
    xml.open('GET',url)

    // ExtJS
    Ext.Ajax.request({
        
    url url,
        
    method 'GET',
        
    headers : { Authorization auth }
    });

    // jQuery
    $.ajax({
        
    url url,
        
    method 'GET',
        
    beforeSend : function(req) {
            
    req.setRequestHeader('Authorization'auth);
        }
    }); 
    Mein Frage ist nun, wo müssen die Scripte eigentlich hin, also header, ajax call, RAW, ExtJS, jquery? Kann ich statt GET auch POST verwenden? Wo müssen die Zugangsdaten übermittelt werden? Gibt es noch ausführlichere Scipts hierzu?

  • #2
    Das ganze sieht mir recht unvollständig aus. Das Prinzip dürfte aber das folgende (nicht neue) sein:

    1) Du baust ein Formular auf die Webseite
    2) Bei Absenden sendet das Formular per POST/GET (egal) einen "AJAX"-Request an: usernameasswort@example.com/geschützter_bereich. Damit wird der Browser authorisiert.
    3) nach erfolgreichem Request (solltest noch prüfen ob die Rückgabe nicht "Forbidden" lautet.) wird dann via JS nach example.com/geschützter_bereich weitergeleitet

    Das müsste es sein.

    Kommentar


    • #3
      Hallo,

      ich finde das Skript sinnlos (sorry), da Authentifizierung (Basic und Digest) bereits in der open-Methode eingebaut ist:
      Code:
      xhr.open(method, url, true, username, password);
      (Als method wird derzeit unterstützt: GET, HEAD, POST, PUT, DELETE und teilweise sogar OPTIONS.)

      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        Ich find’s (so wie’s im Beispiel umgesetzt ist) noch aus einem anderen Grund sinnlos:

        Sollten die Zugangsdaten nicht korrekt sein, wird der Browser wiederum das ungewollte Popup zur „erneuten“ Eingabe der Daten bringen – und das ist wohl kaum gewünscht, wenn man sich schon ein Formular zur Eingabe dieser Daten bastelt.

        Die einzige Möglichkeit, das zu verhindern, ist dass man den AJAX-Request erst mal an ein Script außerhalb des geschützten Bereiches schickt und dabei Nutzername und Passwort nur als Parameter übergibt. Das Script prüft dann, ob die Zugangsdaten OK sind (ggf. indem es einfach selbst einen HTTP-Request für eine Ressource innerhalb des geschützten Bereiches macht und den Response auswertet), und gibt dem clientseitigen Script entsprechende Rückmeldung. Erst danach wird dann ein weiterer AJAX-Request gemacht, der die Zugangsdaten auch wirklich als solche übergibt und in den geschützten Bereich geht, damit der Browser sie sich für nachfolgende (nicht-AJAX-)Requests merkt. (Und IIRC mag Opera letzteres auch nicht tun, zumindest als ich sowas das letzte Mal probiert habe – der brachte beim ersten nicht-AJAX-Folgerequest trotzdem noch das Fenster zur Eingabe der Zugnagsdaten.)
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar

        Lädt...
        X