2010-12-31 9 views
1

私はsymfonyベースのアプリケーションでWebサービスを開発しようとしていますが、sfguarduserプラグインを使用しています。ユーザー権限を確認してから実行するワンショットリクエストで認証されるwebserviceアクション、htmlフォームのログインなしでログインアクションを実行する方法はありますか?あなたのアクションでhttpログインなしでsfguarduserで認証

答えて

5

は、次の手順を実行します。

あなたがsfGuardUserのオブジェクトに呼び出す必要があり
$this->getUser()->signin($sfGuardUserObject); 

。このコードをモジュールのpreExecute()メソッドに入れて、各リクエストをチェックすることができます。

「アカウントをアクティブにする」操作を行っていたとき、私は何か似たようなことをしました。トークンの付いた電子メールは、アカウント作成後に送信され、サイトに戻るリンクが含まれています。トークンがURLで送信され、アクションへのルートで照合されます。アクションは、ユーザはそのトークンを持っているし、その後でユーザーをログに記録します。これは、私がやったことであるかどうかをチェックする:。

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(); 

} 

はそれがお役に立てば幸いです。

+1

ところで、 'sfAction :: forward404If'は、あなたがそれを知らないと便利な方法です。 –

+0

申し訳ありませんが、この時間は申し訳ありませんが、ちょっと忙しかったですが、最近私は何をしたのか覚えていませんが、あなたの答えは正しいものとしてマークします。 – markcial