2012-04-11 19 views
0

私はSymfony2で認証を取得しようとしています。セッション変数を使用したプログラムによる認証

私のユーザは、symfony2によって制御されていないサイト上のログインフォームを使用します。

symfonyは、セッション変数を読み込んでDBと比較することで、すでにログインしているユーザを検出して認証します。

私はsymfonyのウェブサイトのログインフォームを再実装したくありません。

たとえば、symfony 1.xでは、単純にBasicSecurityUserクラスをオーバーロードしてsetAuthenticatedメソッドを使用しますが、これはSymfony2では不可能です。

同じ結果を達成する簡単な方法はありますか?

ありがとうございました!

答えて

2

あなたが認証されたユーザーのユーザー名を知ったら、あなたがそれらをログインすることができます:私はあなたのメソッドを呼び出す必要がありますどこから

use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; 

class MyController { 

// Takes either userName or an actual user object 
protected function setUser($userName) 
{ 
    if (is_object($userName)) $user = $userName; 
    else 
    { 
     $userProvider = $this->get('zayso_core.user.provider'); 
     // Need try/catch here 
     $user = $userProvider->loadUserByUsername($userName); 
    } 
    $providerKey = 'secured_area'; 
    $providerKey = $this->container->getParameter('zayso_area.provider.key'); // secured_area 

    $token = new UsernamePasswordToken($user, null, $providerKey, $user->getRoles()); 
    $this->get('security.context')->setToken($token); 
    return $user; 
} 
+0

? security.ymlで指定されたログインメソッド? – Saze

+0

それはおそらく最もきれいな場所です。 – Cerad

+0

それは動作していないようです。それは、ログインと要求されたページとの間の無限のリダイレクトで終わります... – Saze

関連する問題