What : 어떤 문제가 있었는지
Try : 시도해본 것들
How : 어떻게 해결했는지
WHAT
1주차 진행했던 프로젝트에서는 쿠키를 자바스크립트 파일을 통해 생성, 삭제합니다.
function logout(){
$.removeCookie('mytoken', { path: '/' });
alert('로그아웃!');
window.location.href='/';
}
jwt 발급을 Be에서 하는것은 이해가 됩니다. 사용된 암호화 알고리즘, payload에 들어간 정보 등을 클라이언트에게 노출시킬 필요는 없을 것 같아요. 보안 측면에서도 Be에서 수행하는게 적절하다고 생각했습니다.
그런데 왜 쿠키 생성, 삭제는 Fe에서 한걸까요? 저는 그 이유를 잘 모르겠더라구요.
쿠키를 생성하고 삭제하는 것은 인증과 연관이 있는 것이기 때문에 Be에서 처리해야 더 적절하지 않을까라는 생각을 해봤습니다. 결국 생각이 꼬리에 꼬리를 물고 Be에서는 쿠키를 만료시킬 수 없어서 그런가? 이런 엉뚱한 생각이 들었습니다.
TRY
0주차에 팀원들과 진행했던 토이 프로젝트 코드 일부입니다.
# python login API 일부
if login_member['passwd'] == passwd_receive:
response = make_response()
response.set_cookie('emailCookie', login_member['email'])
return response
이렇게 쿠키를 생성했었네요.
set_cookie() 메서드 일부입니다. 쿠키의 유효기간과 관련되어 보이는 인자가 몇 개 보입니다.
def set_cookie(
self,
key: str,
value: str = "",
max_age: t.Optional[t.Union[timedelta, int]] = None,
expires: t.Optional[t.Union[str, datetime, int, float]] = None,
- max_age : 쿠키의 유효 시간을 나타냅니다.
- expires: 쿠키의 만료 기한입니다.
둘은 비슷해 보이는데 max_age는 60초! 이런식이라면 expires 는 2022-12-13일 23:00 시 이런 느낌입니다.
여튼 본론으로 돌아와서 max_age를 이용하면 쿠키를 만료시킬 수 있지 않을까 생각했습니다.
HOW
응답에 쿠키 만료 시간을 적어 보냈습니다.
@routes.route('/logoutV2', methods=['GET'])
def logoutV2():
response = make_response()
response.set_cookie('mytoken', max_age=1)
return response
실행 전
실행 후 (1초가 지나기 전) 요건 value를 공백으로 설정해서 변화한 것!
실행 후 (1초 후)
'항해99' 카테고리의 다른 글
항해99 9일차 TIL1 - 인텔리제이 단축키를 설정해봐요:) (0) | 2022.12.14 |
---|---|
항해99 8일차 - TIL RESTful API란 무엇인가? (1) | 2022.12.14 |
항해99 1주차 WIL - 반성과 해결 (0) | 2022.12.11 |
항해 6일차 TIL - app.py가 점점 복잡해지고 있어요!(FEAT - blueprint) (0) | 2022.12.11 |
항해 5일차 TIL - Github에 기밀 정보가 올라가요. (0) | 2022.12.11 |