我正在使用Symfony 3來完成一個項目。所以我爲用戶創建了一個登錄頁面。當他登錄時,他會被重定向到配置文件頁面。在配置文件頁面中有一個註銷按鈕供用戶註銷。我想要做的是,當用戶登錄和註銷時,隨後的日期和時間應該自動進入數據庫。如何在用戶登錄和註銷symfony時將日期和時間插入到數據庫中?
0
A
回答
0
您可以通過收聽security.interactive_login
活動保存登錄日期和時間。這是你應該怎麼做的。
爲同創建服務:
app.authentication_success_handler:
class: AppBundle\EventListener\AuthenticationSuccessHandler
arguments: ['@doctrine.orm.entity_manager', '@router']
tags:
- { name: kernel.event_listener, event: security.interactive_login, method: onSecurityInteractiveLogin }
請注意:您在參數傳遞entity_manager
因爲你會需要它來更新數據庫。
接下來創建一個類,以調用服務:
class AuthenticationSuccessHandler implements AuthenticationSuccessHandlerInterface
{
/**
* @var type
*/
private $em;
/**
* @var type
*/
private $router;
public function __construct(EntityManager $em = null, Router $router)
{
$this->em = $em;
$this->router = $router;
}
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
$token = $event->getAuthenticationToken();
$request = $event->getRequest();
$this->onAuthenticationSuccess($request, $token);
}
/**
* @param Request $request
* @param TokenInterface $token
* @return RedirectResponse
*/
public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
$path = "_security.main.target_path";
$session = $request->getSession();
$referrer = $this->router->generate('homepage'); // default redirect path.
// Handle gated content, if user has accessed before login,
if ($session->get($path)) {
$referrer = $session->get($path);
}
$user = $token->getUser();
// ############## Do database update here. Since you have access to User Object($user) and Entity manager($this->em).
$dateTime = new \DateTime();
$user->setLoginTime($dateTime);
$this->em->flush();
return new RedirectResponse($referrer);
}
}
這應該保存登錄時間工作。
辦理註銷時間:
你可以這樣做,通過實施LogoutHandlerInterface
並添加處理您的安全配置。
創建服務:
app.logout_handler:
class: AppBundle\EventListener\LogoutListener
arguments: ['@doctrine.orm.entity_manager', '@router']
現在,確保當用戶註銷時,該服務將被調用。現在
// security.yml
security:
firewalls:
main:
logout:
handlers: [app.logout_handler]
您可以創建另一個類AppBundle\EventListener\LogoutListener
應實行LogoutHandlerInterface
並保存用戶信息,像我們做的app.authentication_success_handler
。
雖然我還沒有測試過。但它應該工作。
希望它有幫助!
相關問題
- 1. ColdFusion - 捕獲登錄日期/時間和註銷日期/時間
- 2. 如何使用php codeigniter在db中插入用戶登錄日期和時間?
- 3. 如何在用戶在數據庫中插入數據時插入當前日期和時間
- 4. 插入時間和日期到數據庫中使用的mysql_query
- 5. 如何將日期時間值插入到SQLite數據庫中?
- 6. 將日期時間插入數據庫
- 7. 如何在動態插入數據庫時插入時間和日期
- 8. 每次登錄和註銷Windows XP時,如何記錄時間?
- 9. 在SQLite數據庫中插入當前日期和時間
- 10. 檢查日期時間輸入和數據庫日期時間
- 11. 配對登錄和註銷日期時間,並計算工作時間
- 12. 無法使用PHP將日期和時間插入到MYSQL數據庫中
- 13. 用於將日期和時間插入到數據庫中的SQL語法
- 14. 如何根據mysql中的小時數分割登錄和註銷時間
- 15. 如何將日期時間插入到MySQL日期時間?
- 16. 如何使用SQL在數據庫中插入當前日期和時間?
- 17. 將日期時間插入到數據庫中
- 18. 將日期時間格式插入到數據庫中
- 19. Spring SQLUpdate將零時間的日期插入到數據庫中
- 20. 將數據插入Teradata時轉換日期和時間戳
- 21. 我如何將登錄和註銷日期時間戳記彙總爲登錄時間,然後將時間替換爲NULL - 在T-SQL中?
- 22. Objective-c - 用戶的登錄和註銷時間
- 23. 獲取時間和日期並將其插入到數據庫中
- 24. 組合日期和時間值並將其插入到數據庫在asp.net
- 25. 在MySQL數據庫中插入日期和時間的日期時間列時,它將插入日期但時間00-00-00
- 26. 日期時間(日期和時間)與數據註釋驗證
- 27. 在oracle11g中插入日期和時間
- 28. LINQ - 如何將空日期時間插入數據庫列?
- 29. 修改mysql數據庫用戶輸入日期和時間
- 30. 如何使用PHP和MySQL數據庫獲取上次登錄日期時間?
你可以在答案中分享註銷的控制器方法嗎?這樣它將成爲問題的完整答案,我可以將其標記爲已回答。 – serializer
嗨,似乎有一種方法可以通過處理程序保存註銷時間。我已經編輯了我的答案。請檢查一次。 – Jeet
謝謝Brodie ... :) – serializer