2012-08-12 54 views
3

我有一個Symfony2 Web應用程序,它需要用戶登錄執行此類有用的操作。在Symfony中,您可以將鏈接指向登錄頁面,然後框架處理的安全性完成剩下的工作。您必須在security.yml配置文件中定義登錄頁面的路由。Symfony2:從每個頁面登錄

我想知道,如果是有可能如何讓用戶登錄網站的每個頁面(例如,通過將在頁面頂部的登錄表單)。這將節省頁面加載並且不會打擾用戶。

在此先感謝

回答

8

最好的辦法是讓所有的模板擴展一個基本模板。即,在所有的枝條模板有類似

{% extends 'YourBundle::base.html.twig' %} 

在base.html.twig呈現控制器,它呈現的登錄表單。要做到這一點,在base.html.twig做這樣的事情:

{% render "YourBundle:Security:loginForm" %} 

然後創建一個控制器動作,這樣的:在你的loginForm.html.twig

public function loginFormAction() 
{ 
    $loginForm = //create the form 
    return $this->render('YourBundle:Security:loginForm.html.twig', array(
     'form' => $loginForm, 
    } 
} 

最後呈現形式。

+0

這不提供這樣的安全問題嗎? – JeanValjean 2012-08-12 10:39:26

+0

?對不起,我不明白你的意思? – 2012-08-12 10:58:19

+0

我只想知道在做解決方案時是否存在這樣的安全隱患。我猜不是,因爲我正在渲染一個應該安全的控制器。但是,如果我想使用安全連接(https)登錄頁面,則還必須爲呈現登錄表單的所有頁面使用安全連接。不是嗎? – JeanValjean 2012-08-12 11:03:23

1

Symfony2防火牆在您在security.yml中定義的登錄操作中使用_username, _password, _remember_me and _target_path

你可以在你想要的每個頁面上(例如在頁眉中)放置一個表單(使用formBuilder,formType或直接到你的模板中的字段,由你決定),使用這些表單名稱並將它們發送給你登錄操作。 Symfony會自動處理,併爲您休息!