2010-12-31 5 views
1

Ich versuche, einen Webservice in einer symfony-basierten Anwendung zu entwickeln, verwenden wir einen sfguarduser Plugin, und ich möchte in einem einzigen Schuss Forderungs-Benutzerdaten authentifizierten werden Benutzerberechtigungen zu überprüfen und dann ausführen Webservice-Aktion, gibt es eine Möglichkeit, Login-Aktion ohne HTML-Formular Login durchzuführen?Authentifizieren mit sfguarduser ohne http Login

Antwort

5

In Ihrer Aktion wie folgt vor:

$this->getUser()->signin($sfGuardUserObject); 

, die Sie mit einem Objekt von sfGuardUser nennen müssen. Sie könnten diesen Code in eine preExecute() - Methode des Moduls einfügen, um jede Anfrage zu überprüfen.

Ich habe etwas Ähnliches getan, als ich eine Aktion "Account aktivieren" machte. Nach dem Erstellen des Accounts wird eine E-Mail mit einem Token gesendet, die einen Link zurück zur Site enthält. Ein Token wird in der URL gesendet und in der Route der Aktion zugeordnet. Die Aktion überprüft dann, ob ein Benutzer dieses Token hat und meldet dann den Benutzer an. Folgendes habe ich getan:

public function executeActivate(sfWebRequest $request) 
{ 
    // if token is not present, forward to 404 
    $this->forward404Unless($request->getParameter('token'), 'page', 'index'); 

    $this->profile = sfGuardUserProfilePeer::activateProfileByToken($request->getParameter('token')); 

    // if someone was activated, return the mobile activation form and success page 
    if (!$this->profile) 
    { 
    $this->redirect404(); 
    } 

    // sign the user in 
    $this->getUser()->signin($this->profile->getsfGuardUser()); 

    // set the $user variable for the template 
    $this->user = $this->profile->getsfGuardUser(); 

} 

Ich hoffe, es hilft.

+1

Gute Antwort. Übrigens ist 'sfAction :: forward404If' eine praktische Methode, wenn Sie nichts darüber wissen. –

+0

Entschuldigung für die ganze Zeit, ohne zu antworten, war ein wenig beschäftigt, heutzutage nicht erinnern, was ich getan habe, aber ich werde Ihre Antwort als richtig markieren, denn klingt echt, vielen Dank für Ihre Antwort :-) – markcial

Verwandte Themen