क्या कोई यह समझा सकता है कि आप मैन्युअल रूप से मुझे नियंत्रक में कुकी कैसे याद कर सकते हैं?एक सिम्फनी 2 बनाएं मुझे कुकी को मैन्युअल रूप से याद रखें (FOSUserBundle)
मैं उन में लॉग इन रहने के बाद वे "पंजी" बटन दबाया, बाद में उनके पत्र के साथ प्रवेश किए बिना चाहते हैं।
मैंने मैन्युअल रूप से कुकी बनाने की कोशिश की है, लेकिन मुझे लगता है कि कुकी मान गलत है, और "मुझे याद रखें" कार्यक्षमता काम नहीं करता है। सही नाम वाली एक कुकी सेट हो जाती है। मैंने इसे चेक किया है।
मुझे याद रखें कि उपयोगकर्ता की क्रेडेंशियल्स के साथ सामान्य लॉगिन प्रक्रिया का उपयोग करते समय मुझे कार्यक्षमता की अपेक्षा की जाती है।
security.yml मुझे
security:
firewalls:
main:
remember_me:
lifetime: 86400
domain: ~
path: /
key: myKey
याद security.yml यह वही है मैं अब है, भले ही कुकी सेट है, यह काम नहीं करता।
$um = $this->get('fos_user.user_manager');
$member = $um->createUser();
… Form stuff with bindRequest etc.
$um->updatePassword($member);
$um->updateUser($member);
$providerKey = $this->container->getParameter('fos_user.firewall_name');
$securityKey = 'myKey';
$token = new RememberMeToken($member, $providerKey, $securityKey,
$member->getRoles());
$this->container->get('security.context')->setToken($token);
$redirectResponse = new RedirectResponse($url);
$redirectResponse->headers->setCookie(
new \Symfony\Component\HttpFoundation\Cookie(
'REMEMBERME',
base64_encode(implode(':', array($member->getUsername(),
$member->getPassword()))),
time() + 60*60*24
)
);
return $redirectResponse;
अद्यतन:
मैं भी प्रतिबिंब के साथ PersistentTokenBasedRememberMeServices वर्ग के साथ काम करने की कोशिश की है, लेकिन यह काम नहीं करता। एक कुकी सेट हो जाता है, लेकिन यह मैं Symfony v2.0.5 और FOSUserBundle उपयोग कर रहा हूँ काम नहीं कर रहा
$token = $this->container->get('security.context')->getToken();
$providerKey = $this->container->getParameter('fos_user.firewall_name');
$securityKey = 'myKey';
$persistenService = new
PersistentTokenBasedRememberMeServices(array($um), $providerKey,
$securityKey, array('path' => '/', 'name' => 'REMEMBERME', 'domain' =>
null, 'secure' => false, 'httponly' => true,
'lifetime' => 86400));
$persistenService->setTokenProvider(new InMemoryTokenProvider());
$method = new \ReflectionMethod('Symfony\Component\Security\Http\RememberMe\PersistentTokenBasedRememberMeServices',
'onLoginSuccess');
$method->setAccessible(true);
$method->invoke($persistenService, $request, $redirectResponse, $token);
1,0
अद्यतन 2:
मैं एक 3 रास्ता कोशिश की है। ऊपर, लेकिन प्रतिबिंब के बिना के रूप में ही:
$token = $this->container->get('security.context')->getToken();
$providerKey = $this->container->getParameter('fos_user.firewall_name');
$securityKey = 'myKey';
$persistenService = new PersistentTokenBasedRememberMeServices(array($um), $providerKey, $securityKey, array('path' => '/', 'name' => 'REMEMBERME', 'domain' => null, 'secure' => false, 'httponly' => true, 'lifetime' => 31536000, 'always_remember_me' => true, 'remember_me_parameter' => '_remember_me'));
$persistenService->setTokenProvider(new InMemoryTokenProvider());
$persistenService->loginSuccess($request, $redirectResponse, $token);
आधारित security.yml में कुकी पैरामीटर हो रही के लिए और डुप्लिकेट से बचने के पोस्ट, तो आप उन्हें parameters.yml में और सुरक्षा में रखना चाहिए .yml उन्हें% your_parameter_name% के साथ कॉल करें। वे अब सुरक्षा में उपलब्ध हैं और पैरामीटर – guillaumepotier
+1 इसके लिए सिम्फनी 2 सुरक्षा कक्षाओं का उपयोग करने के लिए उपलब्ध हैं। ध्यान रखें कि याद रखने वाली कुकीज़ के लिए डिफ़ॉल्ट कुकी नाम 'REMEMBERME' है। केवल तभी जब आप उसी कुकी नाम का उपयोग फ़ायरवॉल के रूप में करते हैं, तो आप अपने मैन्युअल सेट कुकी के विरुद्ध प्रमाणीकरण कर रहे हैं सुरक्षा श्रोता द्वारा पहचाना जाएगा। – flu
तर्क 1 सिम्फनी \ ब्रिज \ डॉक्टरेट \ सुरक्षा \ उपयोगकर्ता \ EntityUserProvider :: __ निर्माण() को इंटरफ़ेस को कार्यान्वित करना चाहिए सिद्धांत \ सामान्य \ दृढ़ता \ प्रबंधक रजिस्ट्री, सिद्धांत \ ORM \ EntityManager का उदाहरण मुझे दिया गया है कि मुझे यह मिला है: –