簡體   English   中英

安全性和基於Symfony 2的項目登錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM