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à session
3 - 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 session
3 đượ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 session
5 sẽ có thể lưu trữ thông tin trong bộ nhớ đệm session
6 để sử dụng trong suốt thời gian tồn tại của một session
3. Những thông tin được lưu trữ trong session
8 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 session
3 và sử dụng để quản lý tính năng lưu trữ dữ liệu tạm thời session
6;
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 cookie
5. 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 cookie
7 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à cookie
9 - 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
Quản lý bằng cookie
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 cookie
9 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 cookie
9
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 server
8 đượ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 session
7 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 session
7 phân tách nhau bởi các dấu chấm phẩy session
1
Bên cạnh các cặp session
7 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 session
5 sẽ làm cho cookie
này được ẩn khỏi bề mặt sử dụng của mã JavaScript session
5 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