2013-10-20 33 views
0

我是新来的node.js,我正在开发一个简单的应用程序,其中实时数据分布将在学生和老师之间发生。学生首次登录后,从服务器验证后,它将被重定向到学生界面。
我与所有的认证和数据分发的东西做了,请帮助我,我应该怎么重定向到student.html页面重定向在node.js

var ports = 3000; 
var portt = 3001; 
var express = require('express'); 
var student = require('express')(); 
var teacher = require('express')(); 
var server_s = require('http').createServer(student); 
var server_t = require('http').createServer(teacher); 
var ios = require('socket.io').listen(server_s); 
var iot = require('socket.io').listen(server_t); 
var path = require('path'); 

server_s.listen(ports); 
server_t.listen(portt); 

student.use(express.static(path.join(__dirname, 'public'))); 
student.get('/', function(req,res){ 
    res.sendfile(__dirname + '/login.html'); 
}); 

teacher.use(express.static(path.join(__dirname, 'public'))); 

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


ios.sockets.on('connection', function(socket){ 
    var username, password; 



socket.on('verify',function(data){ 
username = data[0]; 
password = data[1]; 
//************* Database connection and query ************* 
var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
host  : 'localhost', 
user  : 'user', 
password: 'pswd', 
database: 'db' 
}); 

connection.connect(); 
var qstring = 'SELECT s_id FROM login_student WHERE username='+username+'AND password='+password; 
connection.query(qstring, function(err, rows, fields) 
{ 
    if (err) 
    { 
     console.log('ERROR: ' + err); 
      socket.emit('login_failure','database error'); 
     return; 
    } 
    console.log('The solution is: ', rows[0].solution); 
    if (rows>0) alert('Login Successfull');///// **I want redirection here** 
    else socket.emit('login_failure', 'invalid user name or password'); 
}); 

connection.end(); 
}); 
}); 

iot.sockets.on('connection', function(socket){ 
    socket.on('sendlesson', function(lesson){ 
    ios.sockets.emit('updatelesson', lesson); 
}); 
}); 
+0

FWIW:你应该开始使用的方法制得的查询](https://github.com/felixge/node-mysql#preparing-queries)而不是盲目传递用户数据到MySQL,这就是SQL注入的存在。 – robertklep

回答

1

socket.io没有“重定向”的概念,那么你将有发出消息信令您的客户端代码来重定向:

// in your socket.io code 
if (rows > 0) 
    socket.emit('login_success'); 
else 
    socket.emit('login_failure', 'invalid user name or password'); 

// in your client-side code 
socket.on('login_success', function() { 
    location.href = '/student.html'; 
}); 

(直接访问/student.html这显然不会阻止任何人,虽然)

+0

没有其他办法了吗? –

+0

@TalhaMajid没有这样的设置(你有'socket.io'验证用户) – robertklep

+0

它将我重定向到同一页面(即显示localhost:3000的相同内容....)但URL更改为localhost: 3000/Redirect.html它不显示我的内容Redirect.html –