2015-07-03 106 views
-1

我有一個用戶對象,我想這樣做:Symfony的2 - 登錄程序

Auth::login($user) or Auth::attempt($user->getEmail() 

$user->getPassword()) 

哪一個是更好的辦法?我如何使用Symfony2登錄?

編輯 - 不工作尚未

$token = new UsernamePasswordToken($user, null, "user_area", $user->getRoles()); 
$this->get("security.context")->setToken($token); 

return $this->redirectToRoute('panel'); 

回答

1

你想要做的就是所謂的「程序登錄用戶」,它的這樣做:

$token = new UsernamePasswordToken($user, null, "firewall_name", $user->getRoles()); 
$this->get("security.context")->setToken($token); 

這是不可能解釋在這個答案中所有與Symfony安全系統相關的概念,所以請閱讀Symfony手冊的security chapter或官方Symfony文檔中的security tutorials

+0

我使用這個...但沒有工作.... –

+0

'$ user'對象必須是一個真正的用戶(通常從數據庫中獲得)並且它必須實現'UserInterface'。必須將'firwall_name'值更改爲'app/config/security.yml'文件中主防火牆的名稱。即使用戶(至少應該返回array('ROLE_USER')'),$ user-> getRoles()也必須返回一個數組。 –