我有这个Node API作为后端OAuth服务器的前端。在SAML的最后,我在浏览器OAuth中设置了OAuth令牌。
// 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();
});
app.use(express.static(__dirname + '/public'));现在,我被介绍给了一种奇特的NPM,它做的事情和https://github.com/mozilla/node-client-sessions差不多。
当我几乎倾向于使用这个NPM时,我遇到了express-session。https://github.com/expressjs/session -这是用于服务器端会话的。但这也设置了一个cookie
var express = require('express');
var session = require("express-session");
var app = express();
app.use(session({
resave: true,
saveUninitialized: true,
secret: 'ABC123',
cookie: {
maxAge: 60000
}
}));
app.get("/test", function(req, res) {
req.session.user_agent = req.headers['user-agent'];
res.send("session set");
});如果我只需要在浏览器cookie中为后续API调用设置一个持有者令牌,我应该选择哪个选项?
发布于 2015-10-01 12:00:13
express-session是我要去的网站。
如果你看一下用两种不同的方法完成同样的事情需要什么,我认为答案是明确的。
如果您要做的只是设置一个客户端cookie,使服务器能够正确地验证将来的请求,express-session是非常棒的。
下面是一个来自another question I answered的示例,它使用MongoDB作为后端来存储您的会话:
'use strict';
var express = require('express'),
session = require('express-session'),
cookieParser = require('cookie-parser'),
mongoStore = require('connect-mongo')(session),
mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/someDB');
var app = express();
var secret = 'shhh';
app.use(session({
resave: true,
saveUninitialized: true,
secret: secret,
store: new mongoStore({
mongooseConnection: mongoose.connection,
collection: 'sessions' // default
})
}));
// ROUTES, ETC.
var port = 3000;
app.listen(port, function() {
console.log('listening on port ' + port + '.')
});https://stackoverflow.com/questions/32875501
复制相似问题