我正在用Symfony3,Nginx,PHP7構建一個Web應用程序。 對於授權,我創建了一個擴展AbstractGuardAuthenticator的TokenAuthenticator類。我可以使用令牌進行身份驗證並手動註銷。Symfony 3令牌驗證器結束會話
如果我不手動註銷會話似乎永遠持續下去。 我希望應用程序在瀏覽器關閉時使任何會話無效。 所有用戶應該重新進行身份驗證,如果它是新的瀏覽器會話。
會話持續存在,即使重啓了nginx,php fpm並清除了cmd行的緩存,我也沒有要求重新進行身份驗證。
我TokenAuthenticator有這個方法:
public function supportsRememberMe()
{
return false;
}
config.yml:
session:
handler_id: session.handler.native_file
save_path: "/var/lib/php/sessions/%kernel.environment%"
cookie_lifetime: 0
security.yml:
main:
guard:
authenticators:
- app.token_authenticator
logout:
path: logout
target:/
invalidate_session: true
anonymous: false
的php.ini:
session.cookie_httponly On On
session.cookie_lifetime 0 0
session.cookie_path//
如何刪除/刪除會話/餅乾(PHPSESSID)當瀏覽器被關閉?
必須有一個簡單的技巧來做到這一點。
編輯:
在得到這個答案爲什麼開發服務器上的會話大多永不過期https://stackoverflow.com/a/1505596/1249820