javascript - 如何使用 Node Js 创建 session ?

标签 javascript html node.js

我是 Node Js 新手。我正在使用 socket.io 和express 创建应用程序,它在用户登录后获取推文。如何创建 session ,以便推文页面仅在登录后打开,而不是在没有登录的情况下打开。

var express = require('express')
  , app = express()
  , http = require('http')
  , server = http.createServer(app)
  , Twit = require('twit')
  , io = require('socket.io').listen(server);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/login.html');
});

app.get('/tweets', function (req, res) {
  res.sendfile(__dirname + '/twitter.html');
});

最佳答案

配置 Express

var app = express();

    app.configure(function () {
        app.use(express.cookieParser());
        app.use(express.session({secret: 'secret', key: 'express.sid'}));
    });


    app.get('/', function (req, res) {
        res.sendfile(__dirname + '/index.html');
    });

    server = http.createServer(app)
    server.listen(3000);

配置Socket.IO

io = io.listen(server);

io.set('authorization', function (handshakeData, accept) {

  if (handshakeData.headers.cookie) {

    handshakeData.cookie = cookie.parse(handshakeData.headers.cookie);

    handshakeData.sessionID = connect.utils.parseSignedCookie(handshakeData.cookie['express.sid'], 'secret');

    if (handshakeData.cookie['express.sid'] == handshakeData.sessionID) {
      return accept('Cookie is invalid.', false);
    }

  } else {
    return accept('No cookie transmitted.', false);
  } 

  accept(null, true);
});

Reference

关于javascript - 如何使用 Node Js 创建 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25113343/

相关文章:

HTML 将样式应用于 CSS 中的多个 div

node.js - NeDB + typescript

javascript - NestJS - 预期未定义为 GraphQL 模式

javascript - Fancybox媒体如何申请?

html - 将自定义 Bootstrap 工具提示气球与轮廓对齐

javascript - php base64_encode 结果与 javascript 编码结果不相似

node.js - docker stack与mssql和node,如何正确连接到数据库?

javascript - HTML 实体在浏览器中以不同方式呈现

javascript - javascript数组的动态访问

html - 更改 ngRepeat 的步长