[英]Security and login on a Symfony 2 based project
我正在開發基於Symfony 2 PHP框架的Web應用程序。
它具有用於注冊用戶的登錄頁面。 我想為每個登錄系統的用戶執行一些自定義邏輯。
基本上,我想在任何用戶登錄到系統時都進行登錄,但是我不想在主頁的控制器上進行登錄,因為它會在用戶每次重新加載主頁時進行登錄。
我還想實現一個在用戶登錄系統時調用的函數,以便我可以決定是否授予任何用戶訪問權限(基於存儲在用戶數據庫中的全套信息)。
我該如何實現?
對於您的問題的第一部分,我有類似的內容(例如,存儲用戶登錄的最后日期和時間)。 我沿着事件發生的服務路線走了。 在您的服務配置中(此處為XML示例):
<services>
<service id="my.login.listener" class="My\OwnBundle\Event\LoginEventListener">
<tag name="kernel.event_listener" event="security.interactive_login" />
</service>
</services>
然后在包中的適當位置創建上述類:
namespace My\OwnBundle\Event;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use My\OwnBundle\User\User as MyUser;
class LoginEventListener
{
/**
* Catches the login of a user and does something with it
*
* @param \Symfony\Component\Security\Http\Event\InteractiveLoginEvent $event
* @return void
*/
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
$token = $event->getAuthenticationToken();
if ($token && $token->getUser() instanceof MyUser)
{
// You can do something here eg
// record the date & time of the user's login
}
}
}
我想您可以將其擴展到問題的第二部分,但是我還沒有這樣做:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.