簡體   English   中英

socket.io護照會話未定義

[英]socket.io passport session undefinded

我想用

req.user.id

io.sockets.on('connection',module.exports = function(socket){}

所以我試圖用這行socket.request.client.user

像我這樣

插座

io.sockets.on('connection', module.exports = function(socket,client,req){

    connections.push(socket);
    app.use(session({ secret: 'keyboard cat',resave: true, saveUninitialized:true})); // session secret
    app.use(passport.initialize());
    app.use(passport.session()); // persistent login sessions

    console.log('connected: %s socket connected -session',socket.request.client.user ,connections.length);

但是我在控制台上不確定

那是我的完整代碼完整代碼

var authController = require('./app/controllers/authcontroller.js');
var auth = require('./app/routes/auth.js');

    var express    = require('express')
    var app        = express()
    var passport   = require('passport')
    var session    = require('express-session')
    var bodyParser = require('body-parser')
    var env        = require('dotenv').load()
    var exphbs     = require('express-handlebars')
    app.use(session({secret: 'ssshhhhh'}));
    app.use(passport.initialize())  
    app.use(passport.session()) 
    var  server = require('http').createServer(app);
    var io = require('socket.io').listen(server);
    var mysql = require('mysql');

    var connection = mysql.createConnection({
      host: 'localhost',
      database: 'db_users',
      user: 'root',
      password: '',
    });

    users = [];
    connections = [];

    app.use('/cssFiles', express.static('/opt/lampp/htdocs/x/regtest/using-passport-with-sequelize-and-mysql-master/app/routes/assets'));
    //For BodyParser
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(bodyParser.json());


     // For Passport
    app.use(session({ secret: 'keyboard cat',resave: true, saveUninitialized:true})); // session secret
    app.use(passport.initialize());
    app.use(passport.session()); // persistent login sessions
    //passport.authenticate('local-signin'); 

     //For Handlebars
    app.set('views', './app/views')
    app.engine('hbs', exphbs({extname: '.hbs'}));
    app.set('view engine', '.hbs');


    app.get('/', function(req, res){
      console.log('idddddd',req.sessionID);
      res.send('Welcome to Passport with Sequelize');

    });


    //Models
    var models = require("./app/models");


    //Routes
    var authRoute = require('./app/routes/auth.js')(app,passport);


    //load passport strategies
    require('./app/config/passport/passport.js')(passport,models.user);


    //Sync Database
    models.sequelize.sync().then(function(){
    console.log('Nice! Database looks fine')

    }).catch(function(err){
    console.log(err,"Something went wrong with the Database Update!")
    });





    server.listen(process.env.PORT || 5000, function(err){
        if(!err)
        console.log("Site is live"); else console.log(err)

    });




console.log('Server running...');
app.get('/', function(req, res){
    res.sendFile('/opt/lampp/htdocs/x/regtest/using-passport-with-sequelize-and-mysql-master/app/routes/page.html');

});
//connection.connect();

io.sockets.on('connection', module.exports = function(socket,client,req){
    //con
    connections.push(socket);
    //app.use(session);
    app.use(session({ secret: 'keyboard cat',resave: true, saveUninitialized:true})); // session secret
    app.use(passport.initialize());
    app.use(passport.session()); // persistent login sessions

    console.log('connected: %s socket connected session',socket.request.client.user ,connections.length);

req.user是, req.user僅在快速中間件中可用。 如果要訪問護照用戶信息,則必須使用https://www.npmjs.com/package/passport.socketio之類的內容

您還必須使用某種持久性存儲,例如redis或mongodb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM