2013-03-20 65 views
0

在我的應用我使用socketio和的NodeJS。我試圖實現簡單的身份驗證。如果用戶被授權,我必須重定向到我的應用程序,否則我必須重定向到同一頁面。我實現了代碼示例是的NodeJS(表達)與socketio

<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 

,但我面臨的問題是,如果用戶授權它不是重定向到另一個頁面

+0

我面臨的一個問題是,當按鈕以往客戶點擊我正在存儲的用戶名和密碼,我無法讀取未格式化,似乎缺乏一種編碼風格 – mkoryak 2013-03-20 05:19:02

+0

遺憾的問題代碼....在客戶端。在服務器端,當他打開套接字我從套接字的值,並檢查值,如果這些是有效的,它應該重定向到應用程序使用該app.get()....希望我解釋清楚問題... – Ramesh 2013-03-20 05:28:34

回答

1

嘗試發送URL到客戶端,讓客戶端瀏覽器拉手T-他重定向...

這個怎麼樣?

客戶:

$(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' }); 
     } 
}); 

注意:這僅僅是一個示例代碼,無法執行的。