0

我正在尝试在 Symfony2 中进行身份验证。

我的用户在站点的其他地方使用不受 symfony2 控制的登录表单。

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

我不想在网站的 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 回答