우선 models/login.js 를 만들었다. 단순하게 관리자 여부를 판단하고 그렇지 않으면 유저임을 체크하는 함수만 넣었다.
class login {
constructor(id, pw) {
this.id = id;
this.pw = pw;
}
check(id, pw){
if(id == 'admin' && pw == 1234) {
console.log('admin ID login!');
} else {
console.log('user ID login');
}
}
}
module.exports = login;
그리고 routes/index.js 파일에는 라우터를 추가해주었다.
router.post('/login', controller.login);
html은 정말 간단하게 필요한 것만 추가하였다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>index</title>
</head>
<body>
<main>
<div>
<form action="/login" method="post">
<label>ID</label>
<input type="text" name="id" id="id" /><br />
<label>PW</label>
<input type="password" name="pw" id="pw"><br />
<button type="submit">submit</button>
</form>
</div>
</main>
</body>
</html>
마지막으로 routes/cotroller.js 코드이다.
var login = require('../models/login');
...
exports.login = function(req, res) {
var body = [];
req.on('data', (chunk) => {
body.push(chunk);
console.log(body);
});
req.on('end', (req, res) => {
var parsedBody = Buffer.concat(body).toString();
var log = parsedBody.split('&');
var id = log[0].split('=')[1];
var pw = log[1].split('=')[1];
var checkLog = new login();
checkLog.check(id, pw);
});
fs.readFile('./views/login.html', function(err, buf) {
res.end(buf);
});
};
우선 사용자가 보낸 값을 body로 정렬한 다음 parsedBody에 문자열로 넣어주었다. 그러면 값이
ex) parsedBody = "id=admin&pw=1234"
위와 같은 형태로 들어오게 되는데 이를 split으로 나눠서 log에 넣으면 log는 spring 배열의 형태를 같는다.
log = ['id=admin']['pw=1234']
그 후 id와 pw변수를 만들어 log 배열의 값을 각각 변수에 맞게 split으로 나누고 넣어주면 id값과 pw값을 가질 수 있다.
id = admin
pw = 1234