2016-12-27 47 views
0

就我而言,爲了讓服務器端應用程序知道客戶端與它通信的是什麼,它將使用會話ID在客戶端中保存一個cookie。當客戶端也是ExpressJS應用程序時,Cookie處理

這的確是什麼express-session流行的包在ExpressJS會話存儲表示文檔

注意會話數據不會保存在cookie本身,只是會話ID英寸會話數據存儲在服務器端。

所以我相信我可以假設這是Express用來維護會話中用戶數據的策略。

我做了其他的事情:我使用Redis將會話數據存儲在ExpressJS服務器應用程序中。

所以說,我的問題是,我的客戶端應用程序也是一個快速應用程序。我有一個適用於客戶端和服務器的Expressj的應用程序。有一個SPA涉及這個問題,但它與'快遞客戶'溝通,所以它似乎是一個不同的問題。

所以每次我從Express客戶端發送請求到Express服務器中,沒有使用網站傳遞,因此它不能識別會話ID並創建一個新的,產生大量的垃圾Redis的和做的會議解決方案無用。

我應該如何在Express客戶端應用程序中保存或僞造一個cookie,或者甚至更好地解決這類問題?

實際上,如果我知道Express Server在請求(cookie,頭文件或其他)期望的內容,我想我可以解決這個問題。

任何人都知道該怎麼辦?

@Solved

好了,所以,在我的NodeJS客戶端應用程序,我做了以下內容:

login(req,res,next){ 
    var options = { 
     url : 'http://localhost:8090/user/login_handler'; 
    }; 

    request(options, function(error,response,body) { 
     var cookie_string = response['headers']['set-cookie'][0].split(';')[0]; 
     req.session.cookie_string = cookie_string; 
    }); 
} 

check(req,res,next){ 
    var options = { 
     url : 'http://localhost:8090/user/check_handler', 
     headers: { 
     'cookie':req.session.cookie_string 
     } 
    }; 

    request(options, function(error,response,body){ 
     res.json(body); 
    }); 
} 

總之,在服務器端創建會話時,它會與迴應頭文件告訴客戶創建一個cookie。我保存重要信息以在不同時刻作爲cookie傳遞。服務器端然後讀取中間件中的頭文件並將相關數據加載到會話中。

+0

我不知道我明白你想完成什麼。如果您沒有將cookie發送到「Express Server」應用程序,爲什麼使用「express-session」模塊? – jwags

回答

0

不知道你的架構我猜想,你想要的是要麼saveUnitialized選項設置爲false,而不是保存無關的會議,或者僅express-session中間件適用於某些航線的「Express服務器」的詳細信息應用程序

+0

我想讓服務器中的會話可用,即ExpressJS Web服務器,也是NodeJS/ExpressJS的客戶端。 瀏覽器 - 節點,節點會說「瀏覽器,保存一個cookie,每次你打電話給我,給我你的cookies」,但現在沒有瀏覽器。它是節點客戶端 - 節點服務器。 –

+0

您是否寫過「Node Client」,還是像[request](https://www.npmjs.com/package/request)這樣的庫?看起來你只需要將正確的cookie發送到「節點服務器」應用程序。 – jwags

+0

我的意思是一個節點應用程序。我正在使用請求,是的。 我找到了一個方法,就是你說的。 –

相關問題