在Express中更改Cookie的过期时间 [英] Change cookie expiration in Express

查看:125
本文介绍了在Express中更改Cookie的过期时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因为调用 expressServer.use(express.session({params}))时我没有定义maxAge,所以cookie的过期时间设置为会话".

Because I didn't define a maxAge when calling expressServer.use(express.session({params})) the cookie's expiration is set as "Session".

我想在登录时添加记住我"功能.如果选择了记住我",则有效期将延长至一个月.

I would like to add a "remember me" feature when logging in. If "remember me" is selected, the expiration will be extended to a month.

我将如何去做?我只是尝试扩展maxAge,但这似乎无济于事...

How would I go about doing this? I tried simply extending the maxAge, but that didn't seem to do anything...

expressServer.get '/blah', (request, response) =>
    request.session.cookie.maxAge = 2592000
    response.end 'hello there'

感谢您的帮助!

** 编辑 **

我尝试制作一个简单的服务器来测试更新用户的cookie.我正在使用Express 3.0.4

I tried making a simple server to test updating a user's cookie. I'm using Express 3.0.4

当我访问127.0.0.1:9000/blah时,浏览器cookie的过期"字段仍然是会话" ...

When I visit 127.0.0.1:9000/blah, the browser cookie's "expires" field is still "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'

Grrrrrrr ....

Grrrrrrr....

推荐答案

在/login页面上,我有一个复选框,上面写着记住我":

I have a checkbox that says "remember me" on the /login page:

<p class="remember">
  <input type="checkbox" id="remember" name="remember" value="1" />
  <label for="remember">Remember me</label>
</p>

然后在我的/login POST路由中,如果设置了 req.body.remember ,我会进行一些完整性检查并设置会话,否则它只是一个窗口会话:

Then in my POST route to /login I do some sanity checking and set the session if req.body.remember is set otherwise its just a window session:

  //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):

Add the following few lines (I use redis) in app.js:

  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中更改Cookie的过期时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆