2016-03-05 51 views
1

當我從瀏覽器選項卡運行Sails應用程序時,我得到一個可以存儲身份驗證信息的獨特會話。如果您在不同的瀏覽器選項卡中啓動相同的應用程序,則會話是相同的,因此已經通過身份驗證。雖然有用,但我不想那樣。我希望每個瀏覽器選項卡都有一個完全獨特的會話。這是可能的,如果是這樣,如何? sails.sid是如何生成的?我想也許我可以生成一個獨特的祕密,但當然我的代碼看起來已經太晚了。Sails.js - 如何爲每個瀏覽器選項卡設置一個唯一的會話

很明顯,我根本不必使用req.session,併爲每個選項卡生成自己的唯一標識符並存儲,但如果可以的話,我想使用標準會話。

回答

1

對於同一個瀏覽器實例中的每個選項卡,您不能擁有唯一的會話。 會話的工作方式並不適合你想要達到的目標。

一種解決方案是使用套接字來標識選項卡。注意,你不能重新加載頁面,導致每次你會得到一個新的套接字。

+0

基達在過去24小時內得出了同樣的結論。實際上,您可以使用其他平臺爲每個選項卡設置一個唯一的會話,但它不會在Sails/Express中運行。我選擇了智威湯遜。 – kpturner

0

您需要骯髒的破解在這裏。

  1. 每個標籤都有自己獨特的socketId
  2. 所以,你可以使用這個socketId的sessionId
  3. beforeConnect()處理邏輯socketId = sessionId &如果需要將其存儲在某處。
  4. afterDisconnect()處理邏輯刪除會話從存儲。

注:標籤刷新總是創造新的會話,因爲刷新意味着當前標籤本身的開放 新標籤

+0

是的,我想這是@angelos之前提到的答案。我知道我可以推出自己的選項卡特定會話,並且已經實現了這一點,但我確實試圖瞭解快遞提供的開箱即用會話是否可行,但似乎沒有。 – kpturner

相關問題