expressServer.use(express.session({params}))
を呼び出すときにmaxAgeを定義しなかったため、Cookieの有効期限は「セッション」として設定されています。
ログイン時に「記憶する」機能を追加したいのですが、「記憶する」を選択した場合、有効期限は1ヶ月に延長されます。
これを行うにはどうすればよいですか?私は単にmaxAgeを拡張しようとしましたが、それは何もしなかったようです...
expressServer.get '/blah', (request, response) =>
request.session.cookie.maxAge = 2592000
response.end 'hello there'
助けてくれてありがとう!
** [〜#〜]編集[〜#〜] **
ユーザーのCookieの更新をテストする単純なサーバーを作成してみました。 Express 3.0.4を使用しています
127.0.0.1:9000/blahにアクセスしても、ブラウザのCookieの「expires」フィールドはまだ「session」です...
express = require 'express'
expressServer = express()
expressServer.use express.cookieParser()
expressServer.use express.session
secret: 'supersecret'
cookie:
path: '/'
httpOnly: true
expressServer.get '/', (request, response) =>
response.end 'hello'
expressServer.get '/blah', (request, response) =>
request.session.cookie.maxAge = 3600000
response.end 'hello again'
expressServer.listen 9000
console.log 'server running'
Grrrrrrrr ....
/ loginページに「remember me」というチェックボックスがあります。
<p class="remember">
<input type="checkbox" id="remember" name="remember" value="1" />
<label for="remember">Remember me</label>
</p>
次に、私のPOST route to/loginで、健全性チェックを行い、req.body.remember
が設定されていない場合は、ウィンドウセッションのみです。
//user is authenticated
//set session length
if ( req.body.remember ) {
var hour = 3600000;
req.session.cookie.maxAge = 14 * 24 * hour; //2 weeks
} else {
req.session.cookie.expires = false;
}
req.session.userid = user._id;
App.jsに次の数行(redisを使用)を追加します。
app.use(express.cookieParser('secret-Word'));
app.use(express.session({
store: new RedisStore({
Host: cfg.redis.Host,
db: cfg.redis.db
}),
secret: 'another-secret'
}));
Express 4で cookie-sessions を使用してローリングセッションを実装する場合は、次のようにミドルウェアを構成します。
_app.use(cookieSession({
secret: your_secret,
maxAge: your_maxAge,
key: 'sessionId'
}));
_
expires
オプションを設定する必要がないことに注意してください。
セッションを拡張するには、次のように変更するだけです。
_app.get('*', function (req, res, next) {
req.session.foobar = Date.now();
next();
}
_
Express 4にはreq.session.touch()
がないことに注意してください。
Cookie名を値に設定します。これは、JSONに変換された文字列またはオブジェクトです。 pathオプションのデフォルトは"/"
です。
res.cookie('rememberme', '1',
{ expires: new Date(Date.now() + 900000), httpOnly: true });
リンクをたどるさらなる参照のために使用することができます
私は answer を見つけました。ルートの上部に追加します。
app.all '*', (req,res,next) ->
if req.method is 'HEAD' or req.method is 'OPTIONS'
next()
else
req.session._garbage = Date();
req.session.touch();
next();
またはあなたはこれを試すことができます、それは私のために働きました:
if ( req.body.remember )
{
var oneWeek = 7 * 24 * 3600 * 1000; //1 weeks
req.session.cookie.expires = new Date(Date.now() + oneWeek);
req.session.cookie.maxAge = oneWeek;
}