TIL

코변·2022년 5월 10일
0

개발일지

목록 보기
16/41

작업 스케줄을 보니 오늘은 여유가 있을 줄 알았다

그런데 생각해보니 모든 api를 db에 저장하는 것만 만들었지 지우거나

다른 db테이블과 연동되는 api와 공유 헤더를 붙여야 하는 걸 까먹었다.

오늘도 밤을 새야할 것 같다.

앞으로 db, api를 만들 때는 항상 페어로 작업을 해야할 것 같다.

타임어택 이후 강의에서 배웠던 데코레이터 함수를 유저 인증이 필요한 곳에

랩핑해서 사용하고 있는데 너무 편하다.

def authrize(f):
    @wraps(f)
    def decorated_function(*args, **kws):
        if not 'mytoken' in request.cookies:
            abort(401)
        user = None
        token = request.cookies['mytoken']
        try:
            user = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
        except:
            abort(401)
        return f(user, *args, **kws)
    return decorated_function

쿠키값에 토큰이 없으면 Unauthorized에러를 내고 아니라면 쿠키에서

토큰을 가져와 디코드하고 디코드된 값을 유저에 담아 리턴하는 함수다.

@app.route('/home')
@authrize
def home(user):
    if user is not None:

이런식으로 유저가 로그인 했을 때 쓸 수 있는 api를 불러 올 때마다 유저가

로그인 상태인지 확인하고 또 그에 맞는 id값을 편리하게 가져올 수 있다.

데코레이터 함수는 이런 인증절차 말고도 개인작업에서 코드를 효율적으로

줄여줄 것 같다. 팀프로젝트가 끝나고 개인적으로 뒤집어 까봐야 겠다.

profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글