2일차

그루트·2021년 9월 18일
0

미니프로젝트 CSS
메인 페이지를 CSS로 꾸며줬다.
z-index, sticky, flex 등등 찾아보고 직접 적용했다.
예전에 CSS는 강의를 듣고 공부해서 복습하기 편하긴했다.
하지만 오랫동안 안해서인지 사용법을 조금 까먹었던거갔다
역시... 꾸준히 해주는게 중요한거같다.

댓글 등록 & 삭제하기 만들기
팀원들과 같이 하긴했는데 어떻게 해야겠다는건 보이는거같은데 막상 하는건 못하는거같다.
머리가 터질꺼 같다 더 공부해봐야겠다

로그인 기능을 구현하기
강의를 듣고 있다 따라서 만들어보고 있는데
jwt패키지의 사용과 비밀번호 구현시 hashlib 사용

--사용시 임포트--
JWT 패키지를 사용합니다. (설치해야할 패키지 이름: PyJWT)
import jwt

토큰에 만료시간을 줘야하기 때문에, datetime 모듈도 사용합니다.
import datetime

회원가입 시엔, 비밀번호를 암호화하여 DB에 저장해두는 게 좋습니다.
그렇지 않으면, 개발자(=나)가 회원들의 비밀번호를 볼 수 있으니까요.^^;
import hashlib

id, pw를 받아서 맞춰보고, 토큰을 만들어 발급한다 토큰으로 로그인을 관리한다
@app.route('/api/login', methods=['POST'])
def api_login():
id_receive = request.form['id_give']
pw_receive = request.form['pw_give']

회원가입 때와 같은 방법으로 pw를 암호화합니다.

pw_hash = hashlib.sha256(pw_receive.encode('utf-8')).hexdigest()

id, 암호화된pw을 가지고 해당 유저를 찾습니다.

result = db.user.find_one({'id': id_receive, 'pw': pw_hash})

찾으면 JWT 토큰을 만들어 발급합니다.

if result is not None:

# JWT 토큰에는, payload와 시크릿키가 필요합니다.
# 시크릿키가 있어야 토큰을 디코딩(=풀기) 해서 payload 값을 볼 수 있습니다.
# 아래에선 id와 exp를 담았습니다. 즉, JWT 토큰을 풀면 유저ID 값을 알 수 있습니다.
# exp에는 만료시간을 넣어줍니다. 만료시간이 지나면, 시크릿키로 토큰을 풀 때 만료되었다고 에러가 납니다.
payload = {
    'id': id_receive,
    'exp': datetime.datetime.utcnow() + datetime.timedelta(seconds=5)
}
token = jwt.encode(payload, SECRET_KEY, algorithm='HS256').decode('utf-8')

# token을 줍니다.
return jsonify({'result': 'success', 'token': token})

찾지 못하면

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

profile
i'm groot

0개의 댓글