로그인과 로그아웃 요청의 HTTP 메소드(POST와 GET)의 차이는 주로 보안과 데이터 전송 방식의 차이에서 비롯됩니다.
- 로그인 - POST 사용 이유:
- 보안: 로그인 시 사용자의 아이디와 비밀번호와 같은 민감한 정보를 전송해야 합니다. POST 방식은 이러한 정보를 HTTP 요청의 본문(body)에 담아 전송하므로, URL에 정보가 노출되지 않아 GET 방식보다 안전합니다.
- 데이터 크기와 형식의 유연성: POST 요청은 데이터 크기에 제한이 적고, 다양한 형태의 데이터(텍스트, JSON, 바이너리 등)를 전송할 수 있습니다.
- 로그아웃 - GET 사용 이유:
- 데이터 전송의 간소화: 로그아웃 기능은 서버에 어떤 민감한 정보를 전송할 필요가 없습니다. 단지 사용자의 세션을 종료하는 동작만 필요하므로, 간단한 GET 요청으로 충분합니다.
- 사용자 경험: 사용자가 웹 페이지에서 '로그아웃' 링크를 클릭하는 것만으로 로그아웃이 이루어지는 것이 일반적인 사용자 경험에 부합합니다. 이런 경우 간단한 GET 요청이 적합합니다.
물론, 로그아웃을 POST 요청으로 구현하는 것도 가능하며, 이는 웹 애플리케이션의 특정 요구 사항이나 보안 정책에 따라 달라질 수 있습니다. 예를 들어, CSRF(Cross-Site Request Forgery) 공격을 방지하기 위해 로그아웃을 POST로 구현하는 경우도 있습니다.
하지만 일반적으로 로그인은 민감한 정보를 다루기 때문에 POST를 사용하고, 로그아웃은 간단한 세션 종료만을 요구하므로 GET을 사용하는 것이 일반적인 관행입니다.
post와 get을 login , logout에서 각각사용한 예시
logout 같은 경우는 session만 없애줘서 종료하면 되기 때문에 비교적 간단하게 get으로 처리.
app.post("/loginProc", (req, res) => {
const user_id = req.body.user_id;
const pw = req.body.pw;
let sql = `select * from member where user_id=? and pw=?`
let values = [user_id, pw]
connection.query(sql, values,function(err, result){
if(err) throw err;
if(result.length == 0){
res.send("<script>alert('존재하지 않는 아이디입니다.'); location.href='/login';</script>")
}else{
console.log(result[0])
req.session.member = result[0];
res.send("<script>alert('로그인 완료'); location.href='/';</script>")
}
})
})
app.get("/logout", (req, res) => {
req.session.member = null;
res.send("<script>alert('로그아웃 완료'); location.href='/';</script>")
})
'Web App Project' 카테고리의 다른 글
몽고db 환경조성(윈도우 기준) (0) | 2024.01.22 |
---|---|
주식데이터 끌어오기(streamlit) (0) | 2024.01.16 |
어떤 조건에서든 res.send() 함수를 중복하여 호출하면 안된다 (0) | 2024.01.10 |
HTTP 메서드와 데이터를 전송하는 방식[req.query, req.body 차이] (0) | 2024.01.09 |
작업 중간완료 후 git으로 프로젝트 관리하기[새 브랜치 생성>이동> 커밋] (0) | 2024.01.09 |