๐Ÿ”ฅ TIL - Day 20

dhk22ยท2021๋…„ 10์›” 5์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
23/93

๐Ÿ“Œ Oauth2 + JWT

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์ฐจ ํ”„๋กœ์ ํŠธ์—์„œ ๊ตฌํ˜„ํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์— ์ธ์ฆ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.
๋‚ด์ผ๋ถ€ํ„ฐ ์ œ๋Œ€๋กœ ๊ตฌํ˜„ ์‹œ์ž‘!!!!!!!!!

profile
์ข€ ๋” ์ฒœ์ฒœํžˆ ๊นŒ๋จน๊ธฐ ์œ„ํ•ด ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง

0๊ฐœ์˜ ๋Œ“๊ธ€