0

Symfony2 で認証を機能させようとしています。

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

私が望むのは、セッション変数を読み取り、DB と比較することによって、ユーザーが既にログインして認証されていることを Symfony が検出することです。

Web サイトの symfony 部分にログインフォームを再実装したくありません。

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

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

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

4

1 に答える 1

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;
}
于 2012-04-11T16:06:42.517 に答える