在我的应用程序中,我正在使用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
但我面临的问题是,如果用户授权它没有重定向到另一个页面
答案 0 :(得分: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' });
}
});
注意:这只是一个示例代码,而不是可执行代码。