【问题标题】:nodejs(express) with socketio带有socketio的nodejs(express)
【发布时间】:2013-03-09 02:15:04
【问题描述】:

在我的应用程序中,我使用的是 socketio 和 nodejs。我正在尝试实现简单的身份验证。如果用户被授权,我必须重定向到我的应用程序,否则我必须重定向到同一页面。我实现的示例代码是

<script>
     $(function(){    
        $('#join').click( function() {   
            var uname = $('#uname').val();
            alert(uname);
            socket.emit('news', uname);                             
            var pwd = $('#pwd').val();    
            socket.emit('pass', pwd);
        });
        });
</script>

服务器代码是..

app.get('/', function(req, res){
      if(auth)
      {
          res.sendfile(__dirname + '/home.html');
      }
      else
      {
      res.send("hello user");
      }
});
io.sockets.on('connection', function(socket){   
      var uname;
      var pwd;    
    socket.on('news', function(data){       
    uname=data;
    console.log("the information i got is" + uname);
    });
    socket.on('pass', function(data){
    pwd=data;
    console.log("the information i got is" + pwd);      
    if ( uname==123 && pwd ==321)
    {
    auth=true;
    console.log("AUTHENTICATED USER");
    }
    });
    socket.on('disconnect', function(data){          
    });    
});

在控制台上我得到了这个

the information i got is123
the information i got is321
AUTHENTICATED USER

但我面临的问题是,如果用户授权它没有重定向到另一个页面

【问题讨论】:

  • 我面临的一个问题是我无法读取未格式化且似乎缺乏编码风格的代码
  • 对这个问题感到抱歉....在客户端,当客户端单击按钮时,我正在存储用户名和密码。在服务器端,当他打开套接字时,我从套接字获取值并检查这些值是否有效,它应该使用 app.get() 重定向到应用程序......希望我清楚地解释了这个问题......

标签: node.js socket.io


【解决方案1】:

尝试发送 url 给客户端,让客户端浏览器处理重定向...

这个怎么样?

客户:

 $(function(){    
        $('#join').click( function() {   
            var uname = $('#uname').val();
            alert(uname);
            socket.emit('news', uname);                             
            var pwd = $('#pwd').val();    
            socket.emit('pass', pwd);
            socket.on('url', function (data) {
            window.location.href=data;    
  });
        });
        });

服务器:

app.get('/', function(req, res){
      if(auth)
      {
          socket.emit('url', { msg: 'homePage' });  
      }
      else
      {
             socket.emit('url', { msg: 'hiPage' }); 
      }
});

注意:这只是一个示例代码,不可执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-19
    • 2020-04-09
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多