1

在这里,我尝试在用户登录时选择记住 复选框时设置 cookie,但即使是 console.log("hello"); 不管用。

// process the login form
        app.post('/login',passport.authenticate('local-login', {
            successRedirect : '/profile', // redirect to the secure profile section
            failureRedirect : '/login', // redirect back to the signup page if there is an error
            failureFlash : true // allow flash messages
            }), function(req, res) {
            console.log("hello");

            if (req.body.remember) {

              req.session.cookie.maxAge = 1000 * 60 * 3;
            } else {
              req.session.cookie.expires = false;
            }
          res.redirect('/');
    });

但我尝试使用 express.session 直接设置它工作正常,如下所示

app.use(express.session(
    {   secret: 'sessionmaxageset',  
        cookie: { maxAge : 3600000 } 
    } 
)); // session secret
4

1 回答 1

1

以下代码主要基于http://runnable.com/UTlPPF-f2W1TAAET/how-to-use-cookies-in-express-for-node-js。我使用的是 Express 4.2.0,因此必须使用 npm 安装 body-parser 和 cookie-parser 中间件。新的中间件现在取代了名为 cookies.js 和 keygrip.js 的 cookie 解析器。

服务器.JS

    var express = require('express');
    var app = module.exports = express();
    var bodyParser = require('body-parser');
    var cookieParser = require('cookie-parser');
    var http = require('http');
    var logger = require('morgan');
    var 颜色 = 要求('颜色');

    var port = process.env.PORT || 4000;//设置端口

    // 解析请求 cookie,填充
    // req.cookies 和 req.signedCookies
    // 当秘密被传递时,使用
    // 用于签署 cookie。
    app.use(cookieParser('secret-string'));

    // 解析 json、x-www-form-urlencoded 和 multipart/form-data
    app.use(bodyParser());
    应用程序使用(记录器());

    app.get('/', function(req, res) {

     如果(req.cookies.remember){
        res.send('记住了:)。点击<a href="/forget">忘记!');
      }
      别的 {
       res.send('<form method="post">

检查到 <label>'+ '<input type="checkbox" name="remember"/> 记住我 </label> /' + '<input type="submit" 值="提交"/>。

'); } }); app.get('/forget', function(req, res) { res.clearCookie('记住'); res.redirect('返回'); }); app.post('/', function(req, res) { var 分钟 = 60 * 1000; 如果(req.body.remember) res.cookie('remember', 1, { maxAge: minute }); res.redirect('返回'); }); var server = app.listen(端口,函数(){ console.log('监听端口 %d' .green , server.address().port) });
于 2014-05-23T12:39:56.203 回答