Koa.js - Phiên

HTTP là không trạng thái, do đó để liên kết một yêu cầu với bất kỳ yêu cầu nào khác, bạn cần có cách lưu trữ dữ liệu người dùng giữa các yêu cầu HTTP. Cookie và tham số URL đều là những cách thích hợp để vận chuyển dữ liệu giữa máy khách và máy chủ. Tuy nhiên, cả hai đều có thể đọc được ở phía máy khách. Phiên giải quyết chính xác vấn đề này. Bạn chỉ định cho khách hàng một ID và nó thực hiện tất cả các yêu cầu khác bằng cách sử dụng ID đó. Thông tin liên kết với máy khách được lưu trữ trên máy chủ được liên kết với ID này.

Chúng tôi sẽ cần koa-session, do đó cài đặt nó bằng cách sử dụng -

npm install --save koa-session

Chúng tôi sẽ đặt koa-sessionphần mềm trung gian tại chỗ. Trong ví dụ này, chúng tôi sẽ sử dụng RAM để lưu trữ các phiên. Không bao giờ sử dụng điều này trong môi trường sản xuất. Phần mềm trung gian phiên xử lý mọi thứ, tức là tạo phiên, thiết lập cookie phiên và tạo đối tượng phiên trong đối tượng ngữ cảnh.

Bất cứ khi nào chúng tôi thực hiện lại yêu cầu từ cùng một khách hàng, chúng tôi sẽ lưu trữ thông tin phiên của họ với chúng tôi (do máy chủ đó chưa được khởi động lại). Chúng ta có thể thêm nhiều thuộc tính hơn vào đối tượng phiên này. Trong ví dụ sau, chúng tôi sẽ tạo một bộ đếm lượt xem cho một máy khách.

var session = require('koa-session');
var koa = require('koa');
var app = koa();

app.keys = ['Shh, its a secret!'];
app.use(session(app));  // Include the session middleware

app.use(function *(){
   var n = this.session.views || 0;
   this.session.views = ++n;
   
   if(n === 1)
      this.body = 'Welcome here for the first time!';
   else
      this.body = "You've visited this page " + n + " times!";
})

app.listen(3000);

Đoạn mã trên có chức năng gì, khi người dùng truy cập trang web, nó sẽ tạo một phiên mới cho người dùng và chỉ định một cookie. Lần tới khi người dùng truy cập, cookie sẽ được kiểm tra và biến phiên page_view được cập nhật tương ứng.

Bây giờ nếu bạn chạy ứng dụng và truy cập localhost:3000, bạn sẽ nhận được phản hồi sau.

Nếu bạn truy cập lại trang, số lượt truy cập trang sẽ tăng lên. Trong trường hợp này, trang đã được làm mới 12 lần.