我正在嘗試使用symfony2和特殊類型的URL進行自動登錄。就像described here。通過使用symfony2的URL自動登錄
但是,當我使用symfony2調試工具欄,我注意到它說:「未驗證」。但我有一個會話,我有一個用戶對象,它似乎工作得很好。爲什麼調試工具欄會這樣說?
zadbuchy描述的方法有什麼問題嗎?我正在使用symfony 2.1.6。
編輯:我知道這可能不是'最安全'的登錄方式(感謝@Bart的討論),但我很好奇爲什麼symfony2無法正確識別登錄。
我的代碼如下所示:
$firewall = "support_secured_area";
$token = new UsernamePasswordToken($user, null, $firewall, $user->getRoles());
$this->get('security.context')->setToken($token);
$session = $this->get('session');
$session->set('_security_'.$firewall, serialize($token));
// Fire the login event (Suggestion from the answer, but unfortunately it doesn't work :().
$event = new InteractiveLoginEvent($this->getRequest(), $token);
$this->get("event_dispatcher")->dispatch("security.interactive_login", $event);
我可以補充一點,這似乎不是一種非常安全的方式來驗證用戶。 – Bart 2013-03-09 14:37:53
感謝您的評論。我在設計時考慮過。我知道安全問題,但替代方案(寫電子郵件)同樣安全(因爲S/MIME和GnuPG不適用)。 主要用途是提供一種簡單的方式來請求票證和查看票證狀態。所以我認爲沒關係。 – 2013-03-09 15:19:16
並非完全如此。電子郵件大多是一次性事件。用戶應該能夠更改他們的密碼,並且如果通過郵件發送,可以鼓勵他們這樣做。這對於固定的URL是不可能的。您可以更改網址,但與使用用戶名進行身份驗證一樣安全。 – Bart 2013-03-09 15:23:32