【问题标题】:Managing Sessions in node在节点中管理会话
【发布时间】:2014-04-15 09:18:03
【问题描述】:

我正在学习如何使用 nodejs,并且我正在使用我的 php 经验开发一个聊天页面,我知道 nodejs 对 php 所做的几乎没有任何作用,所以我正在构建整个结构,比如重建 php引擎但只是在节点中,现在我的会话有问题,因为我想创建一个用户系统,所以我进行登录,我很难弄清楚要执行什么过程才能进行登录过程以及是否用户存在,进行会话,我的索引中有这段代码

<!doctype html>
<html>
<head>
    <title>Login - Chat</title>

    <meta charset="UTF-8">

    <script type="text/javascript" src="/socket.io/socket.io.js"></script>

    <link rel="stylesheet" type="text/css" href="css/main.css">
    <link rel="stylesheet" type="text/css" href="css/bootstrap.css">
</head>
<body>
    <div class="container" id="page">

        <h2>Chat Login</h2>

        <div id="login-form" class="well">
            <form method="post" accept-charset="UTF-8">
                <div class="form-group" method="post">
                    <label for="Username">Username</label>
                    <input type="text" class="form-control" id="Username" name="Username" placeholder="Enter email">
                </div>

                <div class="form-group">
                    <label for="Password">Password</label>
                    <input type="password" class="form-control" id="Password" name="Password" placeholder="Password">
                </div>

                <button type="submit" class="btn btn-default">Submit</button>
            </form>

        </div>
    </div>

    <script type="text/javascript">

    window.onload = init;

    var socketio = io.connect(window.location.hostname);

    function init()
    {
        var login = document.getElementById('login-form');

        login.onsubmit = requestData;
    }

    function requestData()
    {
        username = document.getElementById('Username');
        password = document.getElementById('Password');

        //alert if form is empty.
        if((username.value && password.value) == '')
        {
            alert('Box has empty value.');

            return false;
        }

        else
        {
            socketio.emit('Login_user', {user: username.value, pass: password.value});
        }
    }

    </script>
</body>
</html>

我使用 socket.io 将数据从客户端传输到服务器,反之亦然(我仍在学习它的套接字)。我在这一步被卡住了,我只需要知道如何在 nodejs 中处理会话,我有我的 github 存储库:Chat 所以你可以在那里看到我的整个代码,知道如何处理会话吗? .

PD:我只是一个新手开发人员,我使用 PHP 大约 6 个月,使用 node 大约 2 周,我不想使用任何框架来更好地学习语言。

【问题讨论】:

    标签: node.js session


    【解决方案1】:

    我建议使用 Express.js 作为节点框架。 Express 通过 Connect 框架内置了支持。我通过 Redis 支持的会话存储使用它来允许多服务器负载平衡。如果您愿意,可以在 app.js 中查看关于 node-express-connect 工作的 sn-p:

    var express = require('express')
        , RedisStore = require('connect-redis')(express)
        ;
    
    var app = express();
    
    app.use(express.session({
      secret: 'some pass',
      cookie: {
        httpOnly: false,
        secure: false,
        maxAge:null,
        domain:'.yourdomain.com'
      },
      store: new RedisStore({
        ttl:1800, //30 min redis ttl
        client:redis,
        secret:'some pass'
      })
    }));
    

    【讨论】:

    • 嗯,我本来打算在没有任何框架的情况下做这个课程和烹饪东西,这样我就可以了解它是如何完成的,我会记住这个建议,谢谢你分享你的 sn -p.
    • 你有关于这个框架的书籍或指南教程吗?我也在学习javascript,所以我做的很慢
    • 遗憾的是没有真正的书籍,但它几乎是一个临时的,一旦它到位,你就不用动手了。这个不错:expressjs-book.com/forums/topic/…
    【解决方案2】:

    由于您使用的是 socket.io,我建议您通读 session.socket.io 模块。源码非常小巧易读:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多