zoukankan      html  css  js  c++  java
  • socket.io的用户认证

    一直专心于写代码,遇到问题便看别人的博客来解决问题,突然感觉自己也应该写点东西帮助别人来解决问题。废话不多说了,直接切入正题~

    最近在写一个聊天室来学习node和socket相关知识。遇到的问题描述:ajax请求可以通过express-session来parse出目前用户,但socket请求我也想验证是否是登录用户,这个怎么做呢?

    这个问题我在网上查了很多资料,大多都写的非常复杂,后来经自己实践,其实只需要给io加一个跟express用的中间件一样就可以了,能parse出来完全一样的user。一行代码胜过千言万语。附上两个middleware的代码(路径自行调整):

    本例使用mongodb存储session, 使用到了connect-mongodb-session插件。

    1. ajax用的中间件

    var session = require('express-session');
    var MongoDBStore = require('connect-mongodb-session')(session);
    var dbSettings = require('../db/settings');
    
    module.exports = session({
        secret: dbSettings.COOKIE_SECRET,
        cookie: {
            maxAge: 1000 * 60 * 60 * 24 * 7 // 1 week
        },
        store: new MongoDBStore({
            uri: `mongodb://${dbSettings.HOST}:${dbSettings.PORT}/${dbSettings.DB}`,
            collection: 'mySessions'
        }),
        // Boilerplate options, see:
        // * https://www.npmjs.com/package/express-session#resave
        // * https://www.npmjs.com/package/express-session#saveuninitialized
        resave: true,
        saveUninitialized: true
    });

    引用该中间件方式(细节请自行补充):

    var app = express();
    var sessionMiddleware = require('./middleware/sessionMiddleware');
    app.use(sessionMiddleware);

    2. io用的中间件

    var sessionMiddleware = require('./sessionMiddleware');
    
    module.exports = function(socket, next) {
        sessionMiddleware(socket.handshake, {}, next);
    };

    引用该中间件方式:

    var socketIO = require('socket.io');
    var ioSessionMiddleware = require('../middleware/ioSessionMiddleware');
    
    var ioServer = socketIO(server);
    ioServer.use(ioSessionMiddleware);
    
    ioServer.on('connection', function(socket) {
         let session = socket.handshake.session;
    }
  • 相关阅读:
    [2013腾讯马拉松 3月23日]HDU 4517 小小明系列故事——游戏的烦恼
    金山西山居初赛第三场 HDU 4551~HDU 4553
    Redis安装
    前端常用网址汇总
    Html5移动端页面布局通用模板暨移动端问题总结
    js数组去重,并统计最多项算法
    纯css实现下拉菜单
    js实现求平均数功能
    Html5+css3实现3D转动效果
    移动设备分辨率及响应式断点汇总
  • 原文地址:https://www.cnblogs.com/asie-huang/p/6611209.html
Copyright © 2011-2022 走看看