Eine Ebene höher
Frage
Wie realisiere ich einen Login-Dialog über ein Eingabeformular?
Was ist ein CookieCrumbler?
Antwort
Zope benutzt normalerweise eine Cookie-basierten Authenfizierungsmechanismus. Um einen Login-Dialog über ein HTML Formular zu realisieren geht man wie folgt vor:
- CookieCrumbler installieren (ist bei CMF dabei oder von http://hathaway.freezope.org runterladen
- Im ZMI auf höchster Ebene instanziiert man einen CookieCrumber (ID ist beliebig, Defaultparameter kann man unverändert übernehmen)
- der Eingabe-Dialog sieht in etwas wie folgt aus:
<form method="post" action="logged_in"> <input type="text" name="__ac_name"> <input type="text" name="__ac_password"> <input type="hidden" name="__ac_persistent" value="1"> <input type="submit"> </form> - beim Submitten schnappt sich der CookieCrumbler den Usernamen und Passwort auf magische Weise und authentifziert den Benutzer gegenüber den Userfolder automatisch
- in logged_in (kann ein ZPT oder ein PyScript sein) kann man überprüfen,
ob der Benutzer authentifiziert wurde und dann entsprechend auf
eine weitere Seite redirecten.
Bsp.:
from AccessControl import getSecurityManager user = getSecurityManager().getUser().getUserName() if user=='Anonymous User': context.REQUEST.RESPONSE.redirect('login_failed') # failed else: context.REQUEST.RESPONSE.redirect('login_ok') # login ok