Symfony - Quản lý cookie và phiên
Thành phần Symfony HttpFoundation cung cấp quản lý cookie và phiên theo cách thức hướng đối tượng. Cookiecung cấp khả năng lưu trữ dữ liệu phía máy khách và nó chỉ hỗ trợ một lượng nhỏ dữ liệu. Thông thường, nó là 2KB cho mỗi miền và nó phụ thuộc vào trình duyệt.Sessioncung cấp khả năng lưu trữ dữ liệu phía máy chủ và nó hỗ trợ một lượng lớn dữ liệu. Hãy để chúng tôi xem cách tạo cookie và phiên trong ứng dụng web Symfony.
Bánh quy
Symfony cung cấp lớp Cookie để tạo một mục cookie. Hãy để chúng tôi tạo một màu cookie, màu này sẽ hết hạn sau 24 giờ với giá trịblue. Tham số khởi tạo của lớp cookie như sau.
- name (type: string) - tên cookie
- value (type: string) - giá trị cookie
- hết hạn (kiểu: số nguyên / chuỗi / ngày giờ) - thông tin hết hạn
- path (type: string) - đường dẫn máy chủ có sẵn cookie
- miền (loại: chuỗi) - địa chỉ miền mà cookie có sẵn
- an toàn (loại: boolean) - cookie có cần được truyền trong kết nối HTTPS hay không
- httpOnly (type: boolean) - cookie chỉ có sẵn trong giao thức HTTP
use Symfony\Component\HttpFoundation\Cookie;
$cookie = new Cookie('color', 'green', strtotime('tomorrow'), '/',
'somedomain.com', true, true);
Symfony cũng cung cấp tùy chọn tạo cookie dựa trên chuỗi sau.
$cookie = Cookie::fromString('color = green; expires = Web, 4-May-2017 18:00:00 +0100;
path=/; domain = somedomain.com; secure; httponly');
Bây giờ, cookie đã tạo cần được đính kèm vào tiêu đề của đối tượng phản hồi http như sau.
$response->headers->setCookie($cookie);
Để lấy cookie, chúng ta có thể sử dụng đối tượng Request như sau.
$cookie = $request->cookie->get('color');
Đây, request->cookie thuộc loại PropertyBag và chúng ta có thể thao tác nó bằng các phương thức PropertyBag.
Phiên họp
Symfony cung cấp một lớp Session triển khai giao diện SessionInterface. API phiên quan trọng như sau,
start - Bắt đầu phiên làm việc.
Session $session = new Session();
$session->start();
invalidate - Xóa tất cả dữ liệu phiên và tạo lại ID phiên.
set - Lưu trữ dữ liệu trong phiên bằng một khóa.
$session->set('key', 'value');
Chúng ta có thể sử dụng bất kỳ dữ liệu nào trong giá trị phiên, ở dạng số nguyên đơn giản đến các đối tượng phức tạp.
get - Lấy dữ liệu từ phiên sử dụng khóa.
$val = $session->get('key');
remove - Xóa một khóa khỏi phiên.
clear - Loại bỏ dữ liệu phiên.
FlashBag
Phiên cung cấp một tính năng hữu ích khác được gọi là FlashBag. Nó là một vùng chứa đặc biệt bên trong phiên chỉ giữ dữ liệu trong quá trình chuyển hướng trang. Nó hữu ích trong chuyển hướng http. Trước khi chuyển hướng đến một trang, dữ liệu có thể được lưu trong FlashBag thay vì vùng chứa phiên thông thường và dữ liệu đã lưu sẽ có sẵn trong yêu cầu tiếp theo (trang được chuyển hướng). Khi đó, dữ liệu sẽ tự động bị vô hiệu.
$session->getFlashBag()->add('key', 'value');
$session->getFlashBag()->get('key');