こんにちはみんな私のコードです:
var express = require('express');
var session = require('express-session');
var app = express();
app.set('trust proxy', 1);
app.use(session({
secret: 'secret',
saveUninitialized: true,
resave: false,
maxAge: 1000 * 60 * 15,
cookie:{
secure: true
}
}));
このコードは常に私のログに戻ります:
警告:connect.session()MemoryStoreは、メモリリークが発生し、単一のプロセスを超えて拡張されないため、本番環境用に設計されていません。
私はそれについてグーグルで試しましたが、いくつかのチュートリアルを理解していないようです。英語が下手でごめんなさい。
これが私の問題と同じ問題に苦しんでいる人に役立つことを願っています。自分で掘り進んでください。
//-momery unleaked---------
app.set('trust proxy', 1);
app.use(session({
cookie:{
secure: true,
maxAge:60000
},
store: new RedisStore(),
secret: 'secret',
saveUninitialized: true,
resave: false
}));
app.use(function(req,res,next){
if(!req.session){
return next(new Error('Oh no')) //handle error
}
next() //otherwise continue
});
_cookie-session
_の代わりに_express-session
_を使用すると、この問題は解決しました。
Cookieを使用して、サーバーではなくクライアントにセッションを保存します。
単に:
npm install cookie-session
_でインストールします
var session = require('express-session');
へ
var session = require('cookie-session');
セッションの保存がすべてです。データベースにセッションを保存する保存システムを追加する必要があります。これは、アプリがセッションを管理するのに役立ちます。
たとえば、mongodbでは、connect-mongoを使用できます。ストアパッケージと他のデータベースを見つける必要があります。
https://www.npmjs.com/package/connect-mongo
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
app.use(session({
secret: 'foo',
store: new MongoStore(options)
}));