如何使用快速框架在节点js中设置cookie? [英] How to set cookie in node js using express framework?
问题描述
在我的应用程序中,我需要使用快速框架设置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屋!