ALIEN
417
2021-01-07 17:51:32
2
130

Node.js 고수님들 도와주세요.



app.get('/naverlogin', function (req, res) {
    api_url = 'https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id=' + client_id + '&redirect_uri=' + redirectURI + '&state=' + state;
    res.writeHead(200, { 'Content-Type': 'text/html;charset=utf-8' });
    res.end("<a href='" + api_url + "'><img height='50' src='http://static.nid.naver.com/oauth/small_g_in.PNG'/></a>");

    // 들어오자마자 바로 세션에 accessToken 있는지 확인
    var checkingAccessToken = req.session.accessToken;
    console.log(checkingAccessToken);

    // MSSQL에 해당 accessToken 있는지 확인
    mssql.connect(config, function (err) {
        console.log('mssql connect');
        var mssqlRequest = new mssql.Request();
        var queryString = "SELECT * FROM tSLI WHERE accessToken = '" + checkingAccessToken + "'";
        mssqlRequest.query(queryString, function (err, result) {
            var returnData = result.recordset;
            if(returnData.length > 0) {
                console.log('There is');

                // /member로 이동
                res.redirect('/member');

            } else {
                console.log('None');
            }
        })
    })
});

코드를 아예 가져왔는데요.

첫번째줄에 파라미터인 res를 이용해서 

// /member로 이동

다음 부분에 res.redirect('/member'); 를 사용해서 페이지 이동을 하고 싶습니다.

아마 res가 부모 함수의 res라 인식을 못하는 것 같은데 어떻게 해야 인식하고 제대로 페이지가 이동할까요..?


0
  • 답변 2

  • 킁킁탐정
    715
    2021-01-07 19:03:32

    1. 아마 res.end()를 호출하는 순간 client로 이미 데이터가 전송되고 더이상의 헤더나 바디 변경이 불가능해집니다. 그러므로 res.redirect()  호출이 아무런 동작도 하지 않는 이유입니다.


    2. 오지랖입니다만, 내부에서 사용하는 프로그램이 아니라면 SQL Injection에 노출되어 해킹당할 수 있습니다. 반드시 Prepared Statement를 이용해서 SQL 작업을 하시기를 권해드립니다.



  • 피자7
    568
    2021-01-07 21:40:55

    윗분말대로 코드 4줄에서 이미 응답하고 끝내버리는데요

  • 로그인을 하시면 답변을 등록할 수 있습니다.