[gelöst] Log-In-Funktion im Menü über SSL
am 13.05.2009 - 16:13 Uhr in
Hallo zusammen,
ich verwende Drupal erst seit kurzem.
Alle Eingaben der Nutzer möchte ich nun gern per SSL übertragen.
Dazu habe ich bereits das Modul "SecurePages" installiert und konfiguriert.
Das klappt auch soweit ganz gut.
Allerdings werden die Log-In-Daten nur beim manuellen Aufruf der Seite "users/login/ verschlüsselt übertragen,
nicht aber bei bei Eingabe der Daten in die Maske im Menü auf der linken Seite.
Dieses Problem könnte man sicherlich einfach lösen, in dem man alle Seiten über https ausliefert, dass will ich aber aufgrund der dadurch erhöhten Serverlast vermeiden.
Kann man auf die Log-in-Funktion, die über das Menü aufgerufen wird, zugreifen und diese an SSL binden?
In welcher Datei befindet sich diese Funktion?
Herzlichen Dank im Voraus für die Hilfe!
Viele Grüße
- Anmelden oder Registrieren um Kommentare zu schreiben
Wenn du den Action-Pfad des
am 13.05.2009 - 19:04 Uhr
Wenn du den Action-Pfad des Login-Formulars in Secure Pages einträgst, wird auch korrekt verschlüsselt. Und wenn die SSL Verschlüsselung von Seiten deinen Server überlastet, hast du entweder Unmengen Traffic (dann sollte ne Aufrüstung auch drin sein), oder aber ne hoffnungslos lahme Mühle. Die normalerweise für Spitzenlast einzuplanenden Reservern reichen im Normalbetrieb mehr als locker aus, die Verschlüsselung nicht spürbar ins Gewicht fallen zu lassen, weil die CPU Kerne die meiste Zeit eh Däumchen drehen.
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Suchmaschinenoptimierung (SEO) & Drupal
Herzlichen Dank für deine
am 13.05.2009 - 19:34 Uhr
Herzlichen Dank für deine Antwort, Alexander!
Wie lautet denn der Action-Pfad des Log-In-Formulars? Ich habe bereits gesucht - konnte die Funktion / den Pfad jedoch nicht ausfindig machen.
Danke!
Ah, hast Recht, die Action
am 13.05.2009 - 19:40 Uhr
Ah, hast Recht, die Action ist der aktuelle Pfad, da ja eh alles über die index.php dispatcht wird. Einfach per Firebug den kompletten HTML Code des Blocks kopieren, in einen eigenen neuen Block setzen, den Pfad der Action entsprechend auf HTTPS umstellen und gut iss.
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Suchmaschinenoptimierung (SEO) & Drupal
Danke! Auf die von dir
am 14.05.2009 - 10:58 Uhr
Danke! Auf die von dir geschilderte Art und Weise funktioniert die Weiterleitung zur https:// - Version.
Allerdings ist dies nur möglich, wenn ich den Standard-Block "Benutzeranmeldung" ebenso einblende.
Deaktiviere ich diesen, passiert nichts.
Gibt's da noch eine Möglichkeit, dies zu umgehen? Ist es möglich, den Standard-Block zwar einzubinden, allerdings nicht anzuzeigen, sodass seine Funktionalität gegeben ist?
Alternativ kannst du dir ein
am 14.05.2009 - 11:19 Uhr
Alternativ kannst du dir ein Mini-Modul schreiben mit folgender Funktion:
<?php
function modulname_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'user_login_block') {
global $base_url;
$form['#action'] = str_replace('://', 's://', $base_url) . $form['#action'];
}
}
?>
gruß pebosi
--
http://www.pebosi.net
gruß pebosi
--
https://pebosi.net
Klasse, danke! Kannst du mir
am 14.05.2009 - 12:35 Uhr
Klasse, danke! Kannst du mir dazu bitte noch verraten, wo bzw. wie ich das ganze implementiere?
Wie ein herkömmliches Modul mit Unterordner in sites/modules und name.module funktioniert es ja leider nicht.
Wenn ich es richtig deute, ist es bei deiner Funktion nicht nötig, einen neuen Block mit dem kopierten Action-Pfad anzulegen - somit könnte die herkömmliche Log-In Variante bestehen bleiben, ist das korrekt?
Guck mal unter
am 14.05.2009 - 12:59 Uhr
Guck mal unter http://www.drupalcenter.de/handbuch/15663. Im Prinzip brauchst du eine .module und eine .info Datei.
Den Block kopieren brauchste dann nicht.
gruß pebosi
--
http://www.pebosi.net
gruß pebosi
--
https://pebosi.net
Yup, #hook_form_alter ist
am 14.05.2009 - 13:00 Uhr
Yup, #hook_form_alter ist praktisch die einzige wahre saubere Lösung.
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Suchmaschinenoptimierung (SEO) & Drupal
Hm, ich habe nun die
am 14.05.2009 - 13:10 Uhr
Hm, ich habe nun die folgenden Dateien mit dem jeweiligen Inhalt:
https.info
; $Id$
name = SSL Log-In
description = Ermöglicht das Einloggen via https durch den Block "Benutzeranmeldung".
core = 6.x
https.modul
<?php
// $Id: ssl.module,v 0.1 2009/05/14 14:00:18$
function ssl_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'user_login_block') {
global $base_url;
$form['#action'] = str_replace('://', 's://', $base_url) . $form['#action'];
}
}
?>
Das Modul wird im Adminbereich angezeigt und ich kann es auch aktivieren - allerdings gelange ich bei Eingabe der Log-In Daten immer noch auf eine http:// Seite.
Weiß jemand Rat?
Wenn dein Modul https
am 14.05.2009 - 13:12 Uhr
Wenn dein Modul https heißt, musst du das auch bei der Namensgebung deiner Hook-Implementierungen berücksichtigen.
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Suchmaschinenoptimierung (SEO) & Drupal
Sorry, ist mir auch eben
am 14.05.2009 - 13:19 Uhr
Sorry, ist mir auch eben aufgefallen. Nun funktioniert auch schon die https Weiterleitung, allerdings ist die base_url doppelt in der Adresszeile und damit erhalte ich die Meldung, dass die Seite nicht gefunden wurde.
An welcher Stelle kann ich das beheben?
Tausend Dank schon einmal für eure Hilfe!
hm, hast du vielleicht in
am 14.05.2009 - 13:24 Uhr
hm, hast du vielleicht in den SecurePages Einstellungen eine "Secure Base URL" angegeben?
gruß pebosi
--
http://www.pebosi.net
gruß pebosi
--
https://pebosi.net
Nein, daran liegt es wohl
am 14.05.2009 - 13:28 Uhr
Nein, daran liegt es wohl leider nicht.
Kann es ein Problem sein, dass meine Drupal-Installation nicht direkt im Root-Verzeichnis, sondern in einem Unterordner liegt? Eigentlich nicht, oder?
Ich kann es mir nur so erklären, dass in der base_url und in der action der drupal Link drin wäre.
Also im Beispiel, so wäre es normal:
https://localhost/drupal/node?destination=node
und so passiert es gerade und führt zu einer Fehlermeldung:
https://localhost/drupal/drupal/node?destination=node
hm, alternativ probier mal
am 14.05.2009 - 13:30 Uhr
hm, alternativ probier mal das hier:
$form['#action'] = securepages_baseurl() . $form['#action'];
gruß pebosi
--
http://www.pebosi.net
gruß pebosi
--
https://pebosi.net
Hab mal für das Modul
am 14.05.2009 - 13:33 Uhr
Hab mal für das Modul SecurePages selbst einen Patch erstellt den du testen könntest: http://drupal.org/node/462438
gruß pebosi
--
http://www.pebosi.net
gruß pebosi
--
https://pebosi.net
pebosi schrieb hm,
am 14.05.2009 - 13:49 Uhr
hm, alternativ probier mal das hier:
$form['#action'] = securepages_baseurl() . $form['#action'];
Gleiches Problem, Pfad ist immer noch doppelt.
Wie implementiere ich deinen Patch? Einfach an das Ende der securepages.module kopieren?
url()
am 14.05.2009 - 14:06 Uhr
url()
------------------------
Quiptime Group
Da geht noch was.
Danke für die Antwort, nur
am 14.05.2009 - 14:08 Uhr
Danke für die Antwort, nur inwiefern hilft mir das jetzt weiter? Zumindest ein kleiner Kommentar zu dem Link wäre hilfreich gewesen.
Naja, Du baust die URL
am 14.05.2009 - 14:23 Uhr
Naja, Du baust die URL sozusagen haendisch auf:
$form['#action'] = str_replace('://', 's://', $base_url) . $form['#action'];
Verwende zum Bilden der URL testhalber die url() Funktion.
Das mag zwar sinnlos erscheinen aber es waere nicht die erste Situation die ich erlebe in der man korrekte URLs oder Links mit einer entsprechenden Drupal-Funktion gebildet bekommt.
So ist es auch mit irgendwelchen Links irgendwo im Code und der l() Funktion.
------------------------
Quiptime Group
Da geht noch was.
SSL Login gelöst
am 15.05.2009 - 12:25 Uhr
Mein Problem ist anscheinend folgendes:
<form id="user-login-form" method="post" accept-charset="UTF-8" action="/drupal/node?destination=node">
Die Action wird als relativer Link angegeben. Nehme ich nun, wie in der geposteten Funktion gezeigt, die base_url hinzu, so habe ich natürlich dann "http://localhost/drupal/" davor und somit eine Doppelung von drupal, was den Fehler hervorruft.
Die baseurl benötige ich allerdings, um aus dem http ein https zu machen.
Lösung: Der oben angegebene Code funktioniert, wenn die drupal Installation direkt im Root-Verzeichnis liegt. Also www.example.com/node...
In meinem speziellen Fall jedoch, lagen die Dateien in dem Unterverzeichnis "Drupal".
Dieses wurde hierbei sowohl in die base_url, als auch in den Action-Pfad mit aufgenommen.
An dieser Stelle hilft ein einfaches beschneiden des Actionpfades um die Anzahl der Zeichen von "/drupal".
Danke für eure Hilfe!