diff --git "a/server/API\353\252\205\354\204\270\354\204\234.md" "b/server/API\353\252\205\354\204\270\354\204\234.md" index f96034fd86d170f0f415da973f1bbf5fac216ed0..7bb5c0715b5f2978cb6fc4b3f759c2de6c1dbd9a 100644 --- "a/server/API\353\252\205\354\204\270\354\204\234.md" +++ "b/server/API\353\252\205\354\204\270\354\204\234.md" @@ -11,6 +11,7 @@ | Data | GET | /data/loccode | 행정 구역 코드 요청 | | Auth | POST | /signup | 회원가입 요청 | | Auth | POST | /login | 로그인 요청 | +| Auth | GET | /logout | 로그아웃 요청 | | Auth | GET | /confirm?... | 메일 인증용 토큰의 유효성 확인 요청 | | User Info | GET | /user-info | 회원 정보 요청 | | User Info | POST | /edit-profile | 회원 정보 수정 요청 | @@ -45,7 +46,7 @@ loc_code : — 도/시군구/읍면동 이름과 코드 —, user_info : — 사용자 정보 —, weather_out : — 실외 날씨 데이터 —, - weather_user : — 실내 날씨 데이터 —, + weather_in : — 실내(사용자 개인) 날씨 데이터 —, error: — 에러 —, } } @@ -180,3 +181,8 @@ : 사용자 정보를 수정하는 "/edit-profile" 에서 처리 2. 서버의 응답 형태와 전달 내용 작성 + +### 2021.07.30 \_ 로그아웃 경로 추가 + +1. 로그아웃 요청 주소 생성 + : 로그아웃 요청 시 클라이언트의 쿠키에 저장된 토큰을 없애도록 처리. diff --git a/server/src/controllers/userController.js b/server/src/controllers/userController.js index 07a6cbbc5702e145399900556d1dfab455bb07af..5149be54185ef8e10961e2fd08ab019c66a48f10 100644 --- a/server/src/controllers/userController.js +++ b/server/src/controllers/userController.js @@ -125,6 +125,14 @@ export const postLogin = async (req, res) => { } }; +// 로그아웃 요청 처리 +export const getLogout = (req, res) => { + res.clearCookie("acs_token").redirect("/api"); + // .redirect( + // `${envs.client.protocol}://${envs.client.host}:${envs.client.port}` + // ); +}; + // 메일로 보낸 토큰의 유효성 검사 및 access 토큰 발행 처리 export const getConfirm = async (req, res) => { const { diff --git a/server/src/routers/globalRouter.js b/server/src/routers/globalRouter.js index 5fcf1c9c4ad6a200cb4455b019a859b303e6c6e8..1bafdb46f19146fe3072bf34754f37b2ab0d38b8 100644 --- a/server/src/routers/globalRouter.js +++ b/server/src/routers/globalRouter.js @@ -9,6 +9,7 @@ import { getUserInfo, postEditProfile, postLogin, + getLogout, postSignup, } from "../controllers/userController"; import { onlyPrivate } from "../middlewares"; @@ -24,6 +25,7 @@ globalRouter.get(routes.editProfile, onlyPrivate, getEditProfile); // Authentication globalRouter.post(routes.signup, postSignup); globalRouter.post(routes.login, postLogin); +globalRouter.get(routes.logout, onlyPrivate, getLogout); globalRouter.get(routes.confirm, getConfirm); // User Info diff --git a/server/src/routes.js b/server/src/routes.js index 781f5a78f1b340333f4e90203d9155d6e99480bd..d3cb1f0d69658cb9ebb078c9226934ae3465b1ef 100644 --- a/server/src/routes.js +++ b/server/src/routes.js @@ -17,6 +17,7 @@ const LOCCODE = "/loccode"; // # Auth const SIGNUP = "/signup"; const LOGIN = "/login"; +const LOGOUT = "/logout"; const CONFIRM = "/confirm"; // # User Info @@ -36,6 +37,7 @@ const routes = { locCode: LOCCODE, signup: SIGNUP, login: LOGIN, + logout: LOGOUT, confirm: CONFIRM, userinfo: USER_INFO, editProfile: EDIT_PROFILE, diff --git a/server/src/views/home.pug b/server/src/views/home.pug index ab471299c1e388e1360dda63be71aa174af60145..50d837263422c19f050536675960a1a03c9c6ac6 100644 --- a/server/src/views/home.pug +++ b/server/src/views/home.pug @@ -9,4 +9,6 @@ block content li a(href=routes.base + routes.login) 로그인 li - a(href=routes.base + routes.editProfile) 회원 정보 변경 \ No newline at end of file + a(href=routes.base + routes.editProfile) 회원 정보 변경 + li + a(href=routes.base + routes.logout) 로그아웃 \ No newline at end of file