๐Ÿ‘Š๐Ÿป ๋กœ๊ทธ์ธ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์ดํ•ดํ•˜๊ธฐ

may_soouuยท2020๋…„ 9์›” 29์ผ
0

๋กœ๊ทธ์ธ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์ดํ•ดํ•ด๋ณด์ž

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ž€?!
๊พธ๋ฉฐ์ฃผ๋Š” ๊ฒƒ !!

  • ๐Ÿคทโ€โ™‚๏ธ ์™œ ์“ธ๊นŒ?
    ์›น ์‚ฌ์ดํŠธ์—์„œ ๋กœ๊ทธ์ธ์„ ํ•ด์•ผ๋งŒ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž
    ex. ๋„ทํ”Œ๋ฆญ์Šค์—์„œ ์˜์ƒ ์‹œ์ฒญํ•˜๊ธฐ
    ex. ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ƒํ’ˆ ๋‹ด๊ธฐ
    ex. ์ข‹์•„์š” ๋ˆ„๋ฅด๊ธฐ (๋กœ๊ทธ์ธ ํ›„์—๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ „์ œํ•˜์—)
    - ์œ„์˜ ๊ฒฝ์šฐ๋“ค ๋ชจ๋‘, ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•œ ์ž‘์—…์ธ๋ฐ 
    ๋งค๋ฒˆ ๋กœ๊ทธ์ธ ํ•จ์ˆ˜ ์‹คํ–‰ + ๊ทธ ํ›„ ๊ธฐ๋Šฅ ํ•จ์ˆ˜ ์‹คํ–‰์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์€
    ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ์ด๋‹ค.

    ๊ทธ๋ž˜์„œ ๋กœ๊ทธ์ธ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋†“์€ ํ›„,
    ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•œ ๋กœ์ง ์œ„์—
    @login_decorator๋กœ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค.


๋กœ๊ทธ์ธ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜

import jwt
import bcrypt

from django.http import JsonResponse

from my_settings import SECRET_KEY, ALGORITHM
from user.models import User


def login_decorator(func):
    def wrapper(self, request, *args, **kwargs):
 # ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š์„ ๋•Œ, wrapperํ•จ์ˆ˜๋ฅผ ๊ฐ€๋ณ€ ์ธ์ˆ˜ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ ๋‹ค
      try:
          if token:
             access_token = request.header.get('Authorization', None)
             payload = jwt.decode(access_token, SECRET_KEY, algorithm = ALGORITHM)
             user = User.objects.get(id=payload['userid'])
             request.user = user
               
      except jwt.exceptions.DecodeError:
      	    return JsonResponse({'message' : 'INVALID_TOKEN'}),
      except User.DoesNotExist:
            return JsonResponse({'message' : 'INVAILD_USER'}),

      return func(self, request, *args, **kwargs)
        
    return wrapper      
               
profile
back-end ๊ฐœ๋ฐœ์ž

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