如何使用快速框架在节点js中设置cookie? [英] How to set cookie in node js using express framework?

查看:103
本文介绍了如何使用快速框架在节点js中设置cookie?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的应用程序中,我需要使用快速框架设置cookie。我尝试了以下代码,但它没有设置cookie。任何人都可以帮助我这样做。

In my application i need to set cookie using express framework.I have tried the following code but its not setting the cookie.Can anyone help me to do this.

       var express = require('express'), http = require('http');

       var app = express();


       app.configure(function(){
               app.use(express.cookieParser());

               app.use(express.static(__dirname + '/public'));

               app.use(function (req, res) {

                      var randomNumber=Math.random().toString();
                      randomNumber=randomNumber.substring(2,randomNumber.length);
                      res.cookie('cokkieName',randomNumber, { maxAge: 900000, httpOnly: true })
                      console.log('cookie have created successfully');
               });

             });

           var server = http.createServer(app);
           var io = require('socket.io').listen(server);
           server.listen(5555);


推荐答案

在Express中使用中间件的顺序问题:

The order in which you use middleware in Express matters: middleware declared earlier will get called first, and if it can handle a request, any middleware declared later will not get called.

如果 express.static(),则中间件将被调用,如果它可以处理一个请求, 正在处理请求,您需要移动您的中间件:

If express.static is handling the request, you need to move your middleware up:

// need cookieParser middleware before we can do anything with cookies
app.use(express.cookieParser());

// set a cookie
app.use(function (req, res, next) {
  // check if client sent cookie
  var cookie = req.cookies.cookieName;
  if (cookie === undefined)
  {
    // no: set a new cookie
    var randomNumber=Math.random().toString();
    randomNumber=randomNumber.substring(2,randomNumber.length);
    res.cookie('cookieName',randomNumber, { maxAge: 900000, httpOnly: true });
    console.log('cookie created successfully');
  } 
  else
  {
    // yes, cookie was already present 
    console.log('cookie exists', cookie);
  } 
  next(); // <-- important!
});

// let static middleware do its job
app.use(express.static(__dirname + '/public'));

此外,中间件需要结束请求响应),或将请求传递到下一个中​​间件。在这种情况下,我已经做了后者通过调用 next()当cookie设置时。

Also, middleware needs to either end a request (by sending back a response), or pass the request to the next middleware. In this case, I've done the latter by calling next() when the cookie has been set.

这篇关于如何使用快速框架在节点js中设置cookie?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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