2016-06-24 5 views
0

원격 SQL Server에 연결하기 위해 노드 js express를 사용하고 있습니다. 서버에서 데이터를 검색하고 막대 그래프를 그립니다. 다음 패키지를 사용 중입니다.여러 사용자가 SQL 서버에 연결 중

"body-parser": "^1.15.1", 
"d3": "^3.5.17", 
"express": "^4.13.4", 
"jquery": "^2.2.4", 
"jsdom": "^9.2.1", 
"mssql": "^3.3.0", 
"require": "^2.4.20" 

입력 필드가있는 HTML 로그인 페이지가 있습니다. 입력은 ajax를 통해/user에게 POSTED됩니다. 이 코드는 그가 제공 한 자격 증명이 맞는지 사용자에게 보여주기 위해 사용하는 코드입니다.

app.post('/user', function (req, res, body) { 
uid = req.body.uid; 
pwd = req.body.pwd; 
config = 'Server={IPv4 of server};Database=DbName;Uid=domain\\' + uid + ';Pwd=' + pwd; 
dbConn = new sql.Connection(config); 

dbConn.connect().then(function() {           

    var request = new sql.Request(dbConn); 
    // alert 

}).catch(function (err) { 
    // alert 
}); 
}); 

여기서 Uid 및 Pwd는 사용자의 로그인 자격 증명입니다. 데이터베이스에 액세스 할 수있는 모든 사용자의 경우 연결이 완료되고 그래프가 표시됩니다.

는 그래프에 필요한 데이터를 수집하고 HTML 페이지를 다른 PC에서 다수의 사용자가 동시에 액세스 할 때 다음과 같은 문제가 발생

app.get('/re', function (req, res) { 


dbConn.connect().then(function() {           //using promises instead of callbacks(onceconnect() is done), then go to then() 

    var request = new sql.Request(dbConn); 

    request.query("select * from books;").then(function (recordSet) {   //once query is executed, then go to then() 

     res.send(recordSet); 
     dbConn.close();              //close connection 
    }).catch(function (err) { 

     console.log(err); 
     dbConn.close(); 
    }); 
}).catch(function (err) { 

    console.log(err); 
}); 

}); 

로 전송하는 코드입니다. 유저 (A)에 기록하고 그래프를 보는 경우

1)는, 사용자 B는 단순히 사용자 A가 쿼리를 변경하는 경우 해당 페이지

2)를 검색하여 로그인하지 않고 동일한 그래프를 볼 수있다 그래프의 하위 집합 만 보게되면 사용자 B는 새로 고침시 해당 변경 사항을 보도록 강제됩니다.

3.) userA가 연결을 닫으면 로그 오프합니다. 사용자 B는 더 이상 페이지를 볼 수 없습니다.

연결이 하나만 설정된 것 같습니다. 사용자 B가 로그인했는지 여부에 관계없이 페이지를 봅니다.

사용자 A, B가 순차적으로 (순차적으로) 사용하면 원하는대로 작동합니다.

도와주세요. 더 나아가는 방법에 대한 단서가 전혀 없습니다.

EDIT 1 : 내 변수 config가 한 번에 하나의 UID 및 PWD 만 보유 할 수 있기 때문에이 모든 일이 발생합니다. 따라서 사용자 B는 사용자 A의 자격 증명을 통해 로그인하지 않아도 그래프를 볼 수 있습니다.

답변

0

나는 이에 대한 답을 찾았습니다. - 내 코드에서 세션을 사용하지 않았기 때문에 문제가 발생했습니다. 노드 j에서 express-session을 사용하기 시작했을 때 예상대로 작동했습니다. Session management in Nodejs