Cookie phiên nodejs

Trong bài viết này, chúng ta sẽ gặp gỡ một khái niệm mới có tên gọi là session - được sử dụng trong thiết lập ứng dụng giao tiếp qua mạng máy tính nói chung. Và một công cụ tiện ích có tên gọi là cookie - giúp phần mềm server mà chúng tôi đang thiết lập trình có thể ghi tạm thời bộ nhớ thiết bị của người dùng

Nội dung chính Hiển thị

  • Session là cái gì?
  • Phiên tự quản lý
  • Quản lý bằng cookie

Session là cái gì?

Khái niệm session - tạm dịch là phiên bản đối thoại - cũng được phát hành từ cuộc sống thường nhật hàng ngày của chúng ta giống như những khái niệm khác mà chúng ta đã gặp trong hành trình tự học lập trình web. Ví dụ như khi bạn gặp trực tiếp và nói chuyện với một đối tượng về một chủ đề nào đó trong công việc, khoảng thời gian tính từ khi bạn và đối tác bắt đầu cuộc thảo luận cho đến khi cả hai tạm dừng nói chuyện -

Và khái niệm session trong giao tiếp giữa các phần mềm máy tính cũng không có gì khác biệt. Ví dụ như khi một người dùng mở trình duyệt và truy cập vào một địa chỉ web, sau đó di chuyển qua lại giữa các trang đơn trong trang web này; . Trong trường hợp này, một session thường được tính kể từ thời điểm yêu cầu đầu tiên được gửi tới server cho đến khi người dùng đóng tab web hiện tại

Một session như trên được gọi là session3 - có nghĩa là phiên đối thoại được tính bằng thời gian tồn tại của một trang web trong không gian của trình duyệt. Và các phiên đối thoại session3 được duyệt web sử dụng để làm phương thức xác định khoảng thời gian hiệu ứng cho một số tính năng liên quan. Ví dụ như mã JavaScript ở phía sau session5 sẽ có thể lưu trữ thông tin trong bộ nhớ đệm session6 để sử dụng trong suốt thời gian tồn tại của một session3. Những thông tin được lưu trữ trong session8 sẽ tự động bị xóa ngay sau khi người dùng đóng tab web

Phiên tự quản lý

Giống như cách trình duyệt web định nghĩa session3 và sử dụng để quản lý tính năng lưu trữ dữ liệu tạm thời session6;

Ví dụ điển hình là những tính năng như thêm mới, chỉnh sửa và xóa bài viết trên một trang blog cần được giới hạn quyền sử dụng và chỉ được phép thực hiện trong các session đối thoại với người quản lý blog cookie5. Những yêu cầu tương tự khi được gửi tới server ở bên ngoài khung thời gian hiệu lực của cookie7 sẽ không có hiệu lực và cần được chuyển hướng tới giao diện đăng nhập tài khoản quản trị

Kiểu session này thường được gọi chung là cookie9 - hay phiên bản đăng nhập - và được tính từ thời điểm một người dùng đã thực hiện xong chức năng đăng nhập tài khoản vào một trang web, cho đến khi tài khoản được đăng xuất bởi người thao tác

Như chúng ta đã thảo luận ở phía trên thì việc quản lý session về cơ bản là quản lý các phương tiện truyền tải thông tin yêu cầu request và phản hồi response. Một yêu cầu mở giao diện chỉnh sửa một bài viết được gửi tới trong khung thời gian của một cookie9 cần được xử lý phản hồi khác với một yêu cầu tương tự được gửi tới ngoài khung thời gian của cookie9

Việc xác định một yêu cầu được nhận tại server có ở trong một session nào đó hay không thì có khá nhiều cách thức. Tuy nhiên, cách đơn giản nhất là chúng ta có thể gắn một đoạn thông tin nhỏ để đánh dấu tất cả các yêu cầu được trình duyệt web gửi tới sau khi người dùng thực hiện đăng nhập tài khoản. Đây là một tiện ích server8 được sử dụng chung trong thiết lập phần mềm giao tiếp qua mạng máy tính - có tên gọi là cookie

Một cookie là một đoạn thông tin nhỏ, được tạo bởi phần mềm A và được lưu lại bởi phần mềm B. Mỗi khi phần mềm B gửi bất kỳ một thông điệp gì đó tới phần mềm A thì sẽ phải gửi kèm theo nguyên cả cái cookie đã lưu. Như vậy phần mềm A sẽ có thể nhận biết các yêu cầu được gửi tới bởi phần mềm B trong số 1001 yêu cầu được gửi tới cả các phần mềm C, D, E, v. v. nữa.
_Một người đang học lập trình

Trong khi thiết lập trình web nói riêng, trình duyệt web và các môi trường hành động của phần mềm server đều cung cấp sẵn các phương thức để hỗ trợ chúng tôi tạo ra và gắn các cookie như vậy vào các đường truyền tải thông tin yêu cầu request . Và đoạn mã ví dụ dưới đây là cách mà chúng ta tạo ra một cookie bằng NodeJS để trình duyệt web có thể lưu lại và gắn vào mỗi yêu cầu gửi tới server sau đó

const loginHandler = function(request, response) {
   // Kiểm tra thông tin đăng nhập ...
   // Tạo cookie và chuyển cho trình duyệt web lưu lại
   response.setHeader("Cookie", "session=admin; HttpOnly");
};

const logoutHandler = function(request, response) {
   // Thay đổi cookie và chuyển cho trình duyệt web lưu lại
   response.setHeader("Cookie", "session=normal; HttpOnly");
};

Trong ví dụ mã trên, một đoạn thông tin cookie có dạng session7 tự định nghĩa được gắn vào response và chuyển cho trình duyệt web. Chúng ta cũng có thể tạo nội dung cho một cookie với nhiều cặp session7 phân tách nhau bởi các dấu chấm phẩy session1

Bên cạnh các cặp session7 tự định nghĩa, các cookie còn có các thuộc tính chung được quy định sẵn để tùy chỉnh một số yếu tố liên quan đến cookie đó. Trong ví dụ ở trên thì thuộc tính session5 sẽ làm cho cookie này được ẩn khỏi bề mặt sử dụng của mã JavaScript session5 và chỉ có thể được xuất ra hoặc được chỉnh sửa bởi server

Thao tác gắn kết cookie này vào mỗi yêu cầu gửi tới server sau đó trình duyệt web sẽ tự động xử lý nếu như người dùng chấp nhận lưu trữ cookie khi có thông báo hiển thị bởi trình duyệt

Để tìm hiểu thêm về các thuộc tính khác của cookie trong môi trường web, bạn có thể sử dụng các liên kết sau. Cookie HTTP - MDN