2016-07-12 9 views
0

Node.jsがセッションを覚えていないようです。Node.jsセッションログイン

ミドルウェアとしてcookie-parserおよびexpress-sessionのExpressを使用しています。

私のアプリケーションでは、Mongoを使用してユーザー名とパスワードを保持しています。

次はMWEです:

var express = require('express'); 
var cookieParser = require('cookie-parser'); 
var session = require('express-session'); 

var app = express(); 
app.use(cookieParser({ 
    secret: 'derma-aid' 
})); 
app.use(session({ 
    secret: 'derma-aid', 
    resave: false, 
    saveUninitialized: false, 
    cookie: {secure: false} 
})); 

// CORS (Cross-Origin Resource Sharing) headers to support Cross-site HTTP requests 
app.all('*', function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Headers', 'X-Requested-With'); 
    next(); 
}); 

app.get('/login', function(req, res) 
{ 
    console.log('login'); 
    req.session.user_id = 500; 
    res.send('<h1>login</h1>'); 
}); 

app.get('/view', function(req, res) 
{ 
    console.log('view id: ' + req.session.user_id); 
    res.send('<h1>view: ' + req.session.user_id + '</h1>'); 
}); 

app.get('/logout', function(req, res) 
{ 
    console.log('logout: ' + req.session.user_id); 
    res.send('<h1>logout: ' + req.session.user_id + '</h1>'); 
    delete req.session.user_id; 
}); 

app.listen(5000); 

あなたはhttp://localhost:5000/loginにブラウザに行く場合は、req.session.user_idが設定されるべきであるとhttp://localhost:5000/viewに正しく表示します。 @tibluにより示唆されるようにcookie: {secure: false}

しかし、代わりに、私は未定義のメッセージを取得しています...

EDIT。私はこのエラーを受け取ります:TypeError: Secret string must be provided.。セッションミドルウェアの設定変更で

答えて

0

cookie: {secure: true} 安全とマーク cookie: {secure: false}

クッキーには、NON-HTTPS要求に対して送信されません。 HTTP経由でアプリケーションにアクセスしています。そのhttps://en.wikipedia.org/wiki/HTTP_cookie#Secure_cookie

+0

ああを修正するために管理しました。 'TypeError:Secret stringを指定する必要があります。 –

+0

私はこのエラーを解決できました。 'cookieParser( 'derma-aid')の代わりに' cookieParser({secret: 'derma-aid'}) 'を使用したためです。ほとんどのエクスプレスライブラリはオプションの辞書を使っているので混乱しました。 –

1

もっと読書は私が右、TypeError: Secret string must be provided.

- app.use(cookieParser({ 
-  secret: 'derma-aid' 
- })); 
+ app.use(cookieParser(
+  'derma-aid' 
+));