항해99 5일차 미니과제 회고

Lipton·2021년 9월 18일
0

항해99

목록 보기
6/21

항해99 시작과 동시에 첫번째 미니과제 회고

1 로그인 flask jwt 토큰

app.py 로그인 기능이 에러 (AttributeError: ‘str’ object has no attribute ‘decode’)
pyjwt 기존 버전에서는 jwt.encode()함수의 리턴값이 '바이트 문자열'이라는 자료형이었기 때문에 뒤에 .decode('utf-8')를 붙여 일반 문자열로 바꾸어 주었음. 2.0.0 버전부터는 이 함수의 리턴값이 일반 문자열이기 때문에 여기에 또 .decode('utf-8')를 붙여주게 되면 문자열에는 이런 메소드가 없으므로 에러가 난다.
(101100100110 같은 바이트 자료를 문자열로 바꾸는 것이 decode)

pyjwt 2.0.0 버전

#서버 로그인기능
@app.route('/sign_in', methods=['POST'])
def sign_in():
    # 로그인
    username_receive = request.form['username_give']
    password_receive = request.form['password_give']

    pw_hash = hashlib.sha256(password_receive.encode('utf-8')).hexdigest()
    result = db.users.find_one({'username': username_receive, 'password': pw_hash})

    if result is not None:
        payload = {
            'id': username_receive,
            'exp': datetime.utcnow() + timedelta(seconds=60 * 60 * 24)  # 로그인 24시간 유지
        }
        token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')

        return jsonify({'result': 'success', 'token': token})
    # 찾지 못하면
    else:
        return jsonify({'result': 'fail', 'msg': '아이디/비밀번호가 일치하지 않습니다.'})

token = jwt.encode(payload, SECRET_KEY, algorithm='HS256').decode('utf-8')
부분을 token = jwt.encode(payload, SECRET_KEY, algorithm='HS256') 바꾸거나 jwt 2.0.0버전을 이전 버전으로 바꾼다.


2 로그인 기능 풀림

로그인 후 뒤로가기 하면 로그인 되서 보여지던 페이지가 나오는 것 방지.

@app.after_request
def after_request(response):
    response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
    return response

after_request: HTTP 요청이 들어올때마다 실행
Cache-Control: 캐시 지시어(directives)-확실한 캐시 무효화

  • no-cache
    응답은 로컬 캐시 저장소에 저장될 수 있다.
    다만 먼저 서버와 재검사를 하지 않고서는 캐시에서 클라이언트로 제공될 수 없다.
  • no-store 캐시가 그 응답의 사본을 만드는 것을 금지한다.
  • must-revalidate 캐시 만료후 최초 조회시 원 서버에 검증해야 함

aws 서버에 배포했을 때 서버에 접속이 안되는 현상.

if name == 'main':
	app.run('0.0.0.0', port=5000, debug=True)

app.py에서 app.run('0.0.0.0', port=5000, debug=True)를 해줘야 모든 호스트가 접속이 가능하다.

소감

항해99 시작과 동시에 프로젝트가 진행되었다. 시작하기 전 사전강의를 듣고 시작하지만 부트캠프가 시작하는 동시에 강의를 더 제공해 주고 팀을 짜줘서 5일동안 팀끼리 스스로 프로젝트를 시작한다. 같은 팀에 만난 사람들은 다들 훌륭하고 좋은 분들어여서 혼자서는 생각도 못한 것을 같이 해서 만들 수 있었다. 팀원분들이 고생을 많이해서 끝낼 수 있었던 것 같다. 프로젝트를 시작하면서 가장 힘들고 시간을 많이 쓰게 만든 것은 깃을 사용하는 것이였다. 깃은 잘 사용하면 협업에 좋지만 잘 쓰지 못하면 골치덩어리에 불과했다. 주말에 깃 터미널 말고도 소스트리도 같이 사용해보도록 해야겠다.
또한 로컬에서 잘 작동 되는데 aws에서 배포하면 제대로 안되거나 접근 조차도 막아버려서 식겁하였다. 나중에 배포할때 오류체크 시간도 필요한거 같다.
다른 팀원이 만든 페이지를 보면서 내가 더 페이지를 꾸미고 클라이언트와 서버와의 통신도 더 많이 해보았다면 하는 아쉬움이 많이 남는다. 이번을 계기로 다음 협업에서는 더욱 자기주도적이고 열정적으로 성장할 수 있는 개발자가 되도록 해야겠다.

https://github.com/lipton-web/sparta_kcal_1/blob/kimbumsoo0820/readme.md

profile
Web Frontend

0개의 댓글