Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 如何使用快速会话生成自定义会话ID?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用redis作为会话存储,我还想用快速会话创建自定义会话ID.到目前为止,我实现了使用这样的常量字符串创建会话:

redis配置

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var compression = require('compression');
var session = require('express-session');
var redis = require('redis');
var redisStore = require('connect-redis')(session);

var routes = require('./routes/index');
var api = require('./routes/api');

var app = express();
var client = redis.createClient();

// compress all requests
app.use(compression())

// view ENGIne setup
app.set('views',path.join(__dirname,'views'));
app.set('view ENGIne','ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname,'public','favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname,'public')));
app.use(session({
  secret: 'SECRET',resave: false,saveUninitialized: false,store: new redisStore({ host: 'localhost',port: 6379,client: client}),cookie: {
    maxAge: 60000
  },genid: function(req) {
    return "myApiKey";
  }
}));
app.use('/',routes);
app.use('/request_api',api);

// catch 404 and forWARD to error handler
app.use(function(req,res,next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

它在redis中创建键,如下所示:

127.0.0.1:6379> keys *
1) "sess:myApiKey"

但是,我无法使用uuid生成唯一ID,如session-store github中的doc所述.
我试过像我这样在我的索引路由文件(routes / index.js)中插入会话值

/* GET home page. */
router.get('/',function(req,next) {
  req.session.user = "12345";
  res.render('index',{ title: 'MyApp' });
});

但由于值未定义,无法读取genid函数内的值.
所以,我的问题是:

我可以使用任何模型的uuid生成会话ID,例如user-> uuid吗?如果是,我该怎么办

谢谢,任何帮助将不胜感激.

解决方法

你可以这样做.

var crypto = require('crypto');
   var uuid = require('node-uuid');

你需要node-uuid然后在genid函数

genid:function(req){
     return uuid.v1();
},

或避免身份碰撞

genid:function(req){
     return crypto.createHash('sha256').update(uuid.v1()).update(crypto.randomBytes(256)).digest("hex");
 },

您可以通过req.sessionID访问应用程序中任何位置的会话ID.

大佬总结

以上是大佬教程为你收集整理的node.js – 如何使用快速会话生成自定义会话ID?全部内容,希望文章能够帮你解决node.js – 如何使用快速会话生成自定义会话ID?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。