2013-08-03 9 views
7

मैंने प्रोग्रामेटिक रूप से एक लॉगिन फ़ंक्शन लागू किया है।कैसे कार्यान्वित करें मुझे symfony2 में प्रोग्रामेटिक रूप से याद रखें?

इस कोड को पीछा कर रहा है:

$token = new UsernamePasswordToken($user, $user->getPassword(), 'main', $user->getRoles()); 
$this->get('security.context')->setToken($token); 

$event = new InteractiveLoginEvent($this->getRequest(),$token); 
$this->get('event_dispatcher')->dispatch('security.interactive_login', $event); 

इस के बाद, मैं कैसे मुझे याद लागू करते हैं?

(मुझे पता है कि फॉर्म का उपयोग कैसे करें, लेकिन मैं प्रोग्रामेटिक रूप से मुझे याद रखना चाहता हूं।)

कृपया मदद ...

+0

आप एक सामान्य तस्वीर के लिए [यह सवाल] (http://stackoverflow.com/questions/549) देख सकते हैं। – HamZa

उत्तर

8

RememberMeToken

$key = $this->getParameter('secret'); // your security key from parameters.yml 

$token = new RememberMeToken($user, 'main', $key); 
$this->get('security.context')->setToken($token); 
+0

मैं एक फेसबुक लॉगिन करने की कोशिश कर रहा हूँ। यह मुझे लॉग इन करता है, लेकिन कुकी नहीं बनाता है। '$ token = new RememberMeToken ($ उपयोगकर्ता, 'डिफ़ॉल्ट', $ this-> getParameter ('secret')); $ this-> प्राप्त ('security.token_storage') -> setToken ($ टोकन); ' मेरी security.yml में: ' सुरक्षा: फायरवॉल: डिफ़ॉल्ट: remember_me: कुंजी: '% गुप्त % ' जीवनकाल: 31536000 हमेशा_remember_me: true' – SebCar

0

आप एक अद्वितीय ID के साथ कुकी बना सकते हैं। फिर इस कुकी को डेटाबेस में संग्रहीत करें और जब भी कोई नया विज़िटर साइट पर जाता है तो इस डेटाबेस को चेक करें। यदि आपके उपयोगकर्ता डेटाबेस में संग्रहीत हैं तो इस जानकारी को स्टोर करने के लिए अतिरिक्त कॉलम बनाना सर्वोत्तम होगा। रास्ते में FOSUserBundle पर एक नज़र डालें।

1

मुझे एक ही समस्या थी। आपको UsernamePasswordToken के बजाय RememberMeToken का उपयोग करना चाहिए।

कक्षा पैरामीटर उपयोगकर्ता नाम पासवर्ड के समान हैं इसलिए मैं विवरण में नहीं जाता हूं।

0

उपयोग करने के लिए मैं एक ही विधि का इस्तेमाल किया के रूप में forgottenbas सुझाव दिया की कोशिश करो, लेकिन एक त्रुटि मिला है। मैं $ इस- का इस्तेमाल करना पड़ा> कंटेनर (Symfony2):

$key = $this->container->getParameter('secret'); 

$token = new RememberMeToken($user, 'user_area', $key); 
$this->get('security.context')->setToken($token); 

$ उपयोगकर्ता मेरे उपयोगकर्ता वर्ग और 'user_area' का एक उदाहरण है मेरी फ़ायरवॉल का नाम है।

संबंधित मुद्दे