首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node-Client-session与express-session

Node-Client-session与express-session
EN

Stack Overflow用户
提问于 2015-10-01 04:58:42
回答 1查看 9.8K关注 0票数 4

我有这个Node API作为后端OAuth服务器的前端。在SAML的最后,我在浏览器OAuth中设置了OAuth令牌。

代码语言:javascript
复制
// 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

代码语言:javascript
复制
    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调用设置一个持有者令牌,我应该选择哪个选项?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-01 12:00:13

express-session是我要去的网站。

如果你看一下用两种不同的方法完成同样的事情需要什么,我认为答案是明确的。

如果您要做的只是设置一个客户端cookie,使服务器能够正确地验证将来的请求,express-session是非常棒的。

下面是一个来自another question I answered的示例,它使用MongoDB作为后端来存储您的会话:

代码语言:javascript
复制
'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 + '.')
});
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32875501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档