2012-07-19 41 views
10

Tôi đang cố gắng đặt cookie trong bộ điều khiển đăng nhập để đạt được hệ thống "nhớ thông tin đăng nhập của tôi". Mặc dù tôi đã sử dụng mã chính xác mà tôi tìm thấy trên web, mọi thứ đối với tôi đều sai. Tôi hy vọng bạn có thể giúp tôi tìm ra những gì tôi đang thiếu.Symfony2: đặt cookie

Hãy đi qua các mã:

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'); 
} 

tôi bao gồm những:

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

Lưu ý rằng khai thác gỗ trong hoạt động tốt, kỳ họp đã được tạo ra, nhưng cookie có không.

Trả lời

17

Theo mặc định Symfony\Component\HttpFoundation\Cookie được tạo dưới dạng HttpOnly, kích hoạt các biện pháp bảo mật trong hỗ trợ trình duyệt; điều này giúp giảm thiểu một số tấn công XSS nhất định trong javascript.

Để vạch trần cookie trong trình duyệt như thiết $httpOnly lập luận để false:

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

Nó đáng chú ý là tại thời điểm chỉnh sửa này khung được cấu hình để không sử dụng HttpOnly cookie theo mặc định: xem số cookbook (cookie_httponly).

+0

Điều đó có hiệu quả. Cảm ơn m2mdas. –

15

Thay vì:

$response->send(); 

cố gắng sử dụng:

$response->sendHeaders(); 

Sau này, bạn sẽ có thể chuyển hướng.

+0

Cảm ơn, điều này đã giải quyết được một vấn đề thực sự lạ. –

+0

Cảm ơn, nó cũng giúp tôi – Shaolin

Các vấn đề liên quan