2017-05-18 63 views
0

在我的客戶端我'保存在用戶的cookie令牌:如何在Express上讀取服務器端的cookie?

this.socket.on('server:authentication', function(tokenObject){ 
    if(tokenObject){ 
    sessionStorage.setItem("token", tokenObject); 
    this.setState({ submitted: true}); 
    } 
}.bind(this)); 

然後我想讀在服務器端的是道理,但是當我做:

app.use(cookieParser()); 

app.use(function(req, res, next){ 
    const { token } = req.cookies; 
    console.log(token); 
... 
}); 

我在控制檯上得到「未定義」。同樣的事情,當我嘗試console.log(req.cookies.token)。我怎樣才能做到這一點?

+0

你安裝所需的cookie HTTP請求?當您調用'req.cookies'時,您正在檢查附加到該請求的Cookie。僅僅因爲Cookie已經在客戶端設置了,並不意味着它們會自動附加到您的HTTP請求中。 –

+0

不,我沒有附加我打過的餅乾它是自動製作的。我怎樣才能讓客戶端發送他的cookies? – Mit

+0

這取決於你用什麼來提出請求,但我猜你可能需要將'withCredentials'設置爲true。例如,[這裏是如何使用jQuery](http://stackoverflow.com/questions/10230341/http-cookies-and-ajax-requests-over-https/10249123) –

回答

1

你需要在你的客戶端代碼中設置cookie,你當前的設置是在sessionStorage中,這是一個不同的野獸。

this.socket.on('server:authentication', function(tokenObject){ 
    if(tokenObject){ 
     document.cookie = 'token=' + tokenObject; 
     sessionStorage.setItem("token", tokenObject); 
     this.setState({ submitted: true}); 
    } 
}.bind(this)); 

How to set cookie and get cookie with JavaScript

相關問題