Backend/Node.js
[Node.js] 로그인, 로그아웃
seoooc
2022. 4. 4. 18:31
login.html
<!DOCTYPE html>
<html lang="kr">
<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>로그인</title>
</head>
<body>
<form>
아이디 : <input type="text" name="userid"/><br/>
비밀번호 : <input type="password" name="userpwd"><br/>
<input type="submit" value="login"/>
</form>
</body>
</html>
index.ejs
<!DOCTYPE html>
<html lang="kr">
<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></title>
</head>
<body>
<%=logStatus%>,<%=user.userid%>,<%=user.username%>
<% if(logStatus != 'Y') {%>
<a href="/login">로그인</a>
<%}else if(logStatus =='Y'){%>
<%=user.username%><a href="/logout">로그아웃</a>
<%}%>
<a href="/list">게시판</a>
</body>
</html>
세션 모둘 설치하고 세션 객체 생성하기
var session = require('express-session');
//npm install express-session
mainProcess.js
//로그인 폼 이동
app.get("/login", function (req, res) {
fs.readFile(__dirname + '/login.html', 'utf-8', (error, loginData) => {
res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
res.end(loginData);
});
});
//로그인
app.post("/loginOk", function (req, res) {
var userid = req.body.userid;
var userpwd = req.body.userpwd;
console.log("id=", userid, "pwd=", userpwd);
var sql = "select userid, username from member where userid=? and userpwd=?";
connection.execute(sql, [userid, userpwd], function (error, record) {
if (error) {// 로그인 실패시 로그인으로 이동
res.redirect("/login");
} else {
console.log(record);
if(record.length>0){//로그인 성공
session.user = {
userid: record[0].userid,
username: record[0].username,
autorized : true //인증받음
}
res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
fs.readFile(__dirname + "/index.ejs", "utf-8", function (err, data) {
if (err) {
res.end("404 Page");
} else {
res.end(ejs.render(data, {
user: session.user,
logStatus : "Y"
}));
}
});
} else {//레코드 없을 때
res.redirect("/login");
}
}
});
});
//로그아웃
app.get("/logout", (req, res) => {
if (session.user) { //세션에 정보 있을 때 = 로그인 상태
session.user = null;
fs.readFile(__dirname + "/index.ejs", "utf-8", (error, data) => {
res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
res.end(ejs.render(data, {
logStatus:'N'
}));
});
} else {
console.log("로그아웃 상태");
}
});
※ execute 동작이 안 돼서 query로 바꿔줬더니 정상 실행됨!