Koa.js - 會話



HTTP是無狀態的,因此為了將一個請求與任何其他請求關聯起來,您需要一種方法來在HTTP請求之間儲存使用者資料。Cookie和URL引數都是將資料在客戶端和伺服器之間傳輸的合適方法。但是,它們都可以在客戶端讀取。會話正是解決了這個問題。您為客戶端分配一個ID,它使用該ID發出所有後續請求。與客戶端關聯的資訊儲存在與該ID連結的伺服器上。

我們需要koa-session,因此使用以下命令安裝它:

npm install --save koa-session

我們將koa-session中介軟體部署到位。在這個例子中,我們將使用RAM來儲存會話。切勿在生產環境中使用此方法。會話中介軟體處理所有事情,即建立會話、設定會話cookie以及在上下文物件中建立會話物件。

每當我們再次從同一客戶端發出請求時,我們都會將他們的會話資訊儲存在我們這裡(假設伺服器沒有重啟)。我們可以向此會話物件新增更多屬性。在下面的例子中,我們將為客戶端建立一個訪問計數器。

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

上面程式碼的作用是,當用戶訪問站點時,它會為使用者建立一個新會話並分配一個cookie。下次使用者訪問時,會檢查cookie並相應地更新page_view會話變數。

現在,如果您執行應用程式並訪問localhost:3000,您將獲得以下響應。

Session First

如果您重新訪問頁面,頁面計數器將會增加。在本例中,頁面重新整理了12次。

Session 12
廣告