gpt4 book ai didi

node.js - Node 客户端 session 与快速 session

转载 作者:搜寻专家 更新时间:2023-10-31 23:00:35 24 4
gpt4 key购买 nike

我有这个前端后端 OAuth 服务器的 Node API。在 SAML OAuth 舞蹈结束时,我在浏览器 cookie 中设置 Bearer Token。

// 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 - 这是用于服务器端 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 调用设置不记名 token ,我应该选择哪个选项?

最佳答案

express-session 是我的首选。

如果您查看使用两种不同方法完成同一件事所花费的时间,我认为答案很明确。

如果您只想设置一个客户端 cookie,使服务器能够正确验证 future 的请求,那么 express-session 非常棒。

这是来自 another question I answered 的示例集使用 MongoDB 作为后端来存储您的 session :

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

关于node.js - Node 客户端 session 与快速 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32875501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com