[내일배움캠프] #211015 💻 TIL 💻

이수영·2021년 10월 17일
0

MY TIL 

목록 보기
19/50
post-thumbnail

TIL

웹개발 심화 4주차

로그인기능

  • 로그인만료시간 존재
  • 로그인시 pw 암호화 => 암호화한 값 가지고 db에서 user 찾음
  • user 가 존재하면 클라이언트에게 jwt토큰을 줌 ,jwt 토큰에는 payload와 시크릿키가 필요함
    => payload - 아이디 , 로그인유효시간
    => payload는 다시 암호화 필요 why ? 다른사람도 들어오려고 할 수 있기때문에 서버만의 비밀키로 암호화해줌
  • 로그인 app.py
python
@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').decode('utf-8')

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

로그인후 메인페이지

cookies에서 토큰가져옴
시크릿키를 통해서 토큰을 복호화해서 payload를 꺼내줌 -> 아이디꺼내줌
아이디가 있으면 메인페이지 ! 없으면 error

- 쿠키 : 브라우저 자체 데이터베이스 (브라우저에 저장되어 있는 정보)
=> 서버가 발급해준 자유이용권이라고 생각하면 된다 !
=> 브라우저 자체에 저장되어있기 때문에 익스플로러 -> 크롬 하면 다시 로그인해야함

=> 로그인 이후부터는 서버에게 요청을 보낼 때마다 쿠키가 같이 따라다닌다.

로그인과정 정리

1. 아이디 패스워드 서버로전달
2. 서버는 db에서 사용자정보가 있는지 확인
3. 확인해서 있으면 토큰을 만들어서 클라이언트한테 전달
4. 클라이언트는 그 토큰을 쿠키에 저장!

profile
Hongik Univ 💻

0개의 댓글