2์ฐจ ํ๋ก์ ํธ์ ์์์ด ๋ ์ธ์ฆ์ ๊ตฌํํ ์ฐจ๋ก์ด๋ค.
3๊ฐ์ง ์ ๋์ ์์
๋ก๊ทธ์ธ์ ์ ๊ณตํ ์์ ์ด๊ณ ๊ถํ์ฒ๋ฆฌ๋ JWT
๋ฅผ ์ฌ์ฉํ๋ค.
์นด์นด์ค Oauth2 ์๋ฒ
์์ ๋ฐ์์จ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ด์ฉํด์ JWT ํ ํฐ
์ ํ์ด๋ก๋๋ฅผ ๊ตฌ์ฑํ๊ณ ์ฟ ํค์ ๋ด์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ด๋ ค์ค๋ค.
ํ ํฐ์ ์ฟ ํค์ ๋ด์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ๋ ๋ถ๋ถ์์ cors
๋๋ฌธ์ ๋ง์ด ๊ณ ์ํ๋ค.. ajax๋ก ์์ฒญํ๊ณ ํ ํฐ์ ์๋ต๋ฐ์์ ํด๋ผ์ด์ธํธ์ธก์์ ์ฟ ํค์ ๊ฐ์ ์ธํ
ํ๋ ํ๋ฆ์ ๋จธ๋ฆฌ์์์ ๊ทธ๋ ธ๋๋ฐ ์ผ๋จ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ์ ๋๋ค.
๊ทธ๋ผ ๋ง๋ค์ด์ง ํ ํฐ์ ์ด๋ป๊ฒ ์ฟ ํค์ ๋ด์์ ์ ๋ฌํ ๊ฒ์ธ๊ฐ?
๋ด๊ฐ ์ฐพ์ ๋ต์ make_response()
์ด๋ค.
์ง์ ํ view
๋ฅผ ๋๋๋งํ๊ฑฐ๋ ์ํ๋ ๊ฒฝ๋ก๋ก redirect
ํ ์ ์๋ค.
def login(id, name):
# JWT ํ ํฐ ๊ตฌ์ฑ
payload = {
"id":id,
"name":name,
"exp": datetime.utcnow() + timedelta(seconds=60 * 60 * 24)
}
# JWT ํ ํฐ ์์ฑ
token = jwt.encode(payload, jwt_secret, algorithm='HS256')
# ์ฟ ํค๋ฅผ ๋ด์ response๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด make_response ์ฌ์ฉ
response = make_response(redirect('/'))
# ์ฟ ํค์ ํ ํฐ ์ธํ
response.set_cookie('mytoken', token)
return response
์ฟ ํค์ ์ ์ฅ๋ ํ ํฐ์ผ๋ก ์ธ์ฆ ๋ฐ ์ธ๊ฐ๋ฅผ ์ํํ๋ ์์คํ ์์ ๋ก๊ทธ์์์ ์คํ๋ ค ๋จ์ํ๋ค. ํ์ฌ ๋ธ๋ผ์ฐ์ ์ ์๋ ์ฟ ํค๋ฅผ ์ง์์ฃผ๋ฉด ๋๋ค.
Jquery
์ cookie.js
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.js"></script>
์ฟ ํค ์ญ์
function logout() {
$.removeCookie("์ฟ ํค์ด๋ฆ");
alert('๋ก๊ทธ์์')
window.location.href = '/'
}
์ด์ 1์ฐจ ํ๋ก์ ํธ์์ ๊ตฌํํ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ธ์ฆ์ ์ถ๊ฐํด์ผ ํ๋ค.
๋ด์ผ๋ถํฐ ์ ๋๋ก ๊ตฌํ ์์!!!!!!!!!