我想配置記住我的symfony功能使用他們的默認機制描述here;但不能使它工作。記得我cookies被刪除symfony2
Cookie名爲REMEMBERME創建,但設置爲刪除,其過期日期爲1970年。這就是爲什麼我想記住我的功能不工作。但是,當我在security.yml中使用(always_remember_me:true)時,代碼很好地工作,但不符合我的目的。使用(always_remember_me:true)即使用戶沒有在UI中檢查REMEMBER ME複選框,cookie也會被創建。
任何幫助,高度讚賞
我使用的版本2.3.7
這是我的完整security.yml文件:
security:
firewalls:
main:
pattern: ^/
anonymous: ~
remember_me:
key: "%secret%"
lifetime: 31536000 # a year
domain: ~
path:/
remember_me_parameter: _remember_me
#always_remember_me: true
form_login:
login_path: _my_login
check_path: _my_login_check
always_use_default_target_path: true
default_target_path: /out/homepage
remember_me: true
logout:
path: _my_logout
target: _my_login
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: IS_AUTHENTICATED_REMEMBERED }
providers:
chain_provider:
chain:
providers: [in_memory, user_db]
in_memory:
memory:
users:
user: { password: user, roles: 'ROLE_USER' }
admin: { password: admin, roles: ['ROLE_ADMIN', 'ROLE_USER'] }
user_db:
entity: {class: ProjectName\StoreBundle\Entity\User, property: username}
encoders:
ProjectName\StoreBundle\Entity\User:
algorithm: sha1
iterations: 1
encode_as_base64: false
Symfony\Component\Security\Core\User\User: plaintext
LoginController.php
class LoginController extends Controller
{
/**
* @Route("/login", name="_my_login")
* @Template()
*/
public function loginAction()
{
$request = $this->getRequest();
$session = $request->getSession();
// get the login error if there is one
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(
SecurityContext::AUTHENTICATION_ERROR
);
} else {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
$session->remove(SecurityContext::AUTHENTICATION_ERROR);
}
return array(
// last username entered by the user
'last_username' => $session->get(SecurityContext::LAST_USERNAME),
'error' => $error,
);
}
/**
* @Route("/login_check", name="_my_login_check")
*/
public function loginCheckAction()
{
}
我面臨同樣的問題。 REMEMBERME cookie在登錄時設置。現在,當會話過期並重新加載站點時,服務器將發送響應頭以刪除該cookie。但我不知道爲什麼?它應該只在註銷時將其刪除,但它也會在會話到期時進行。任何幫助都將非常感謝。 – adityap