2012-07-19 18 views
10

मैं "मुझे याद रखें" सिस्टम प्राप्त करने के लिए एक लॉगिन नियंत्रक के भीतर एक कुकी सेट करने का प्रयास कर रहा हूं। भले ही मैंने वेब पर मिले सटीक कोड का उपयोग किया है, मेरे लिए चीजें गलत हो रही हैं। मुझे आशा है कि आप मुझे यह जानने में मदद कर सकते हैं कि मैं क्या खो रहा हूं।Symfony2: कुकी को सेट करना

के कोड के माध्यम से चलते हैं:

public function loginAction(Request $request) { 
// Receiving the login form 
// Get Doctrine, Get EntityManager, Get Repository 
if(/* form information matche database information */) { 
    // Creating a session => it's OK 
    // Creating the cookie 
    $response = new Response(); 
    $response->headers->setCookie(new Cookie("user", $user)); 
    $response->send(); 
    $url = $this->generateUrl('home'); 
    return $this->redirect($url); 

} else 
    return $this->render('***Bundle:Default:Login.html.php'); 
} 

मैं इन में शामिल हैं:

use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\Cookie; 

ध्यान दें कि प्रवेश में ठीक काम करता है, सत्र बना दिया गया है, लेकिन कुकी नहीं है।

उत्तर

17

डिफ़ॉल्ट रूप से Symfony\Component\HttpFoundation\CookieHttpOnly के रूप में बनाया गया है, जो ब्राउज़र का समर्थन करने में सुरक्षा उपायों को ट्रिगर करता है; यह जावास्क्रिप्ट में संभव कुछ एक्सएसएस हमलों को कम करने में मदद करता है।

इस तरह के एक ब्राउज़र में कुकी का पर्दाफाश करने के लिए सेट $httpOnly तर्क false रहे हैं:

new Cookie('user', $user, 0, '/', null, false, false); //last argument 

यह ध्यान देने योग्य है कि इस संपादित करने के समय ढांचा नहीं उपयोग केवल Http डिफ़ॉल्ट रूप से कुकी के लिए कॉन्फ़िगर है लायक है: देखना cookbook (cookie_httponly)

+0

यह काम करता है। धन्यवाद m2mdas। –

15
बजाय

:

$response->send(); 

कोशिश उपयोग करने के लिए:

$response->sendHeaders(); 

इस के बाद आप पुनर्निर्देशित करने के लिए सक्षम होना चाहिए।

+0

धन्यवाद, इसने वास्तव में एक अजीब मुद्दा हल किया। –

+0

धन्यवाद, इससे मुझे भी मदद मिली – Shaolin

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