使用会话变量进行编程验证

时间:2012-04-11 14:40:24

标签: php symfony

我正在尝试在Symfony2中使用身份验证。

我的用户使用不受symfony2控制的网站上其他位置的登录表单。

我想要的是Symfony通过读取会话变量并与数据库进行比较来检测用户是否已经登录并进行身份验证。

我不想在网站的symfony部分重新实现登录表单。

例如,在symfony 1.x中,我只是重载BasicSecurityUser类并使用setAuthenticated方法,但似乎在Symfony2中这是不可能的。

有没有简单的方法可以达到相同的效果?

谢谢!

1 个答案:

答案 0 :(得分: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;
}