【问题标题】:Unable to set cookie in express + passport with nodejs无法使用 nodejs 在 express + 护照中设置 cookie
【发布时间】:2014-09-30 19:22:44
【问题描述】:

这里我试图在用户登录时选择 remember 复选框时设置 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

【问题讨论】:

    标签: express passport-local


    【解决方案1】:

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

    SERVER.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('记住了:)。点击忘记!');
          }
          别的 {
           res.send('

    勾选到 /' + '

    '); } }); 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) });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 2017-07-05
      • 2020-12-20
      • 1970-01-01
      相关资源
      最近更新 更多