symfony2 loginAction不同的渲染

时间:2014-02-05 20:41:19

标签: symfony view login render

我想知道如何在填写访问表单后登录时向用户显示不同的页面。我需要在loginAction中执行此操作,但我不知道如何操作。

我的loginAction如下:

public function loginAction()
{
    $request = $this->getRequest();
    $session = $request->getSession();

    $error = $request->attributes->get(
        SecurityContext::AUTHENTICATION_ERROR,
        $session->get(SecurityContext::AUTHENTICATION_ERROR)
    );
    return $this->render('UsuarioBundle:Default:login.html.twig', array(
                             'last_user' => $session->get(SecurityContext::LAST_USERNAME),
                             'error' => $error
                             )); 
}

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用security.context服务进行检查是否完全由用户进行身份验证,如果是,请渲染其他模板:

public function loginAction()
{
    $request = $this->getRequest();
    $session = $request->getSession();

    $error = $request->attributes->get(
        SecurityContext::AUTHENTICATION_ERROR,
        $session->get(SecurityContext::AUTHENTICATION_ERROR)
    );

    if ($this->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY') === TRUE) {
        return $this->render('UsuarioBundle:Default:logined.html.twig'); // render other template for fully authenticated users
    }

    return $this->render('UsuarioBundle:Default:login.html.twig', array(
                             'last_user' => $session->get(SecurityContext::LAST_USERNAME),
                             'error' => $error
                             )); 
}