Ergebnis 1 bis 6 von 6

Thema: Zend_Auth_Result erweitern - wie?

  1. #1
    Neuer Benutzer
    Registriert seit
    24.08.2012
    Beiträge
    3
    Thanks
    2
    Thanked 0 Times in 0 Posts

    Standard Zend_Auth_Result erweitern - wie?

    Hallo zusammen,

    habe da eine Frage, die ich mal unter "Anfänger" einstufen würde:

    Ich habe eine funktionierende Authentifizierung/Authorisierung über Zend_Auth + Zend_Acl. Bei uns in der Firma ist nun eine neue Passwort-Policy eingesetzt worden, die unter anderem verlangt, dass ein Passwort nach 90 Tagen geändert werden muss.

    Derzeit wird nach dem Übergeben der Login-Daten eines Users geschaut, welcher result code zurückgegeben wird:

    PHP-Code:
    $myAuth Zend_Auth::getInstance();
    $myAuth->setStorage(new Zend_Auth_Storage_Session('authNamespace'));
    $result $myAuth->authenticate($myAuthAdapter);

    if(
    $result->getCode() != 1){
     
    // Code 1 = Authentication successful

     // Ausgabe an Benutzer mit Fehlermeldung, wenn Login fehlgeschlagen

    Ich würde nun gerne "$result->getCode()" auf einen Code abfragen, der mir sagt, dass ein User-Passwort "abgelaufen" ist, um dem Benutzer eine entsprechende Meldung auszugeben. Ein solcher Fall ist in "Zend_Auth_Result" aber leider nicht vorgesehen. Dort gibt es nur:

    PHP-Code:
    // General Failure
    const FAILURE =  0;

    // Failure due to identity not being found
    const FAILURE_IDENTITY_NOT_FOUND = -1;

    // Failure due to identity being ambiguous
    const FAILURE_IDENTITY_AMBIGUOUS = -2;

    // Failure due to invalid credential being supplied
    const FAILURE_CREDENTIAL_INVALID = -3;

    // Failure due to uncategorized reasons
    const FAILURE_UNCATEGORIZED = -4;

    // Authentication success
    const SUCCESS =  1

    Mein Problem ist, dass an sich ja korrekt der ResultCode "1" = "Login korrekt" kommt - denn die Benutzerdaten stimmen ja. Einzig das Passwort ist abgelaufen und muss neu gesetzt werden. Insofern wäre ein anderer ResultCode auch irgendwie wieder am Sinn von ZendAuth vorbei.

    Andererseits fehlt mir bisher bei ZendAuth die Möglichkeit weitere Bedingungen zu prüfen, wie etwa "Ist der User gesperrt?", "Ist das Passwort abgelaufen?". Zumindest habe ich auch nach längerer Suche noch nichts hilfreiches dazu gefunden.

    Hat jemand evtl. einen Lösungsansatz für mich?
    Besten Dank schon einmal vorab!
    Geändert von mf81de (24.08.2012 um 11:05 Uhr)

  2. #2
    Erfahrener Benutzer
    Registriert seit
    06.01.2009
    Beiträge
    240
    Thanks
    0
    Thanked 23 Times in 22 Posts

    Standard

    Wie soll ein Nutzer denn sein Passwort ändern, wenn er sich nicht mehr einloggen kann?

    Ich hab das ganze mal mit Hilfe eines Plugins gelöst. Ich hab' dort abgefragt, ob das Passwort des Benutzers abgelaufen war und ihn, wenn das der Fall war, immer auf die Seite zum Ändern des Passwortes umgeleitet.

  3. The Following User Says Thank You to [-UFO-]Melkor For This Useful Post:

    mf81de (24.08.2012)

  4. #3
    Neuer Benutzer
    Registriert seit
    24.08.2012
    Beiträge
    3
    Thanks
    2
    Thanked 0 Times in 0 Posts

    Standard

    Wie soll ein Nutzer denn sein Passwort ändern, wenn er sich nicht mehr einloggen kann?
    Der Nutzer soll wie bei dir auf eine Seite geleitet werden bzw. einen Link zu der Seite präsentiert bekommen, wo er ein neues Passwort vergeben kann.

    Ich glaube ich denke da eh etwas zu weit... Die einfachste Lösung wird sein, dass ich meine Abfrage von dem Rückgabewert von "getCode()" abkopple und das eher so löse:

    + Mit username + password prüfen, ob Auth = SUCCESS
    + Wenn JA, dann anschließend prüfen, ob Passwort älter 90 Tage
    + Wenn JA, dann Umleitung auf "Passwort-Ändern-Seite"

    Dachte nur, da Zend soviele vorgefertigte Sachen anbietet, dass solch eine Abfrage bereits evtl. irgendwie mit vorgesehen wäre.

    Oder hat noch wer eine bessere Lösung?

  5. #4
    Erfahrener Benutzer Avatar von SeKrebs
    Registriert seit
    04.02.2011
    Beiträge
    1.599
    Thanks
    1
    Thanked 41 Times in 40 Posts

    Standard

    Dachte nur, da Zend soviele vorgefertigte Sachen anbietet, dass solch eine Abfrage bereits evtl. irgendwie mit vorgesehen wäre.
    Musst da schon etwas differenzieren: Das Zend Framework (Zend Inc. hat mehr als ein Produkt im Portofolio) ist ein Framework und kein CMS und so ein Schritt würde vermutlich nur in vielleicht 20% aller Fälle gewünscht sein und in den 20% werden dann 40 Varianten gewünscht Ausserdem gehört das meines Erachtens eh zur Benutzerverwaltung und nicht zu Authentifizierung, denn wie Melkor schon sagte: Wie soll der Benutzer das Passwort denn ändern, wenn er gar nicht authentifiziert wird

    Oder hat noch wer eine bessere Lösung?
    Klingt für mich solide, würde das aber (wie Melkor auch andeutete) in einem vom Auth unabhängigen Plugin auslagern. Wenn der denn authentifiziert ist (hasIdentity()) brauchst du den expliziten Status der Authentifizierung nicht mehr wissen
    "KingCrunchs kleine Welt" -- Blog
    The problem with rats leaving a sinking ship is that they usually do it by gnawing holes in the bottom.

  6. The Following User Says Thank You to SeKrebs For This Useful Post:

    mf81de (24.08.2012)

  7. #5
    Neuer Benutzer
    Registriert seit
    24.08.2012
    Beiträge
    3
    Thanks
    2
    Thanked 0 Times in 0 Posts

    Standard

    Wenn der denn authentifiziert ist (hasIdentity()) brauchst du den expliziten Status der Authentifizierung nicht mehr wissen
    Jo, das ist wahr - danke für die Kopfnuss, manchmal blockiert's halt da oben...

    Super - danke euch beiden für die schnelle Hilfe!! So bin ich wieder ein Stück weiter

  8. #6
    Erfahrener Benutzer
    Registriert seit
    08.08.2011
    Beiträge
    466
    Thanks
    6
    Thanked 34 Times in 33 Posts

    Standard

    Wenn man einen eigenen Fehlercode haben möchte, dann müsste man einen eigenen Auth-Adapter schreiben, der ein My_Auth_Result zurück gibt. Hat, meiner Meinung nach, aber kaum Sinn.

Ähnliche Themen

  1. Cache erweitern?
    Von klaus24 im Forum Core
    Antworten: 7
    Letzter Beitrag: 30.03.2010, 22:44
  2. Layout erweitern?
    Von klaus24 im Forum Core
    Antworten: 7
    Letzter Beitrag: 03.01.2010, 22:27
  3. Zend_Log erweitern?
    Von Jumbler im Forum Einsteigerfragen
    Antworten: 12
    Letzter Beitrag: 27.05.2008, 15:30
  4. Zend_Form_Element erweitern
    Von Milchbazi im Forum Formulare
    Antworten: 14
    Letzter Beitrag: 16.05.2008, 16:41
  5. Zend_Db_* erweitern
    Von divB im Forum DB
    Antworten: 5
    Letzter Beitrag: 31.08.2007, 06:41

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •