[TIL] 항해99 Day 3

woonie·2022년 1월 13일
0

TIL

목록 보기
3/64
post-thumbnail

항해 3일차

여전히 삽질중이다.
팀원들과 아직 구현하지 못한 기능에 대해 분담하여 해결하기로 하였다.
회원가입 과정에서 입력 값들이 설정한 형식에 맞게 입력되는지, 패스워드는 해시 함수를 사용하여 암호화되어 저장되는지, 로그인 과정에서 토큰이 발행되어 쿠키에 저장이 되는지를 찾아보았다.

회원가입

function is_nickname(asValue) {
    var regExp = /^(?=.*[a-zA-Z])[-a-zA-Z0-9_.]{2,10}$/;
  //(?=.*[a-zA-Z])는 필수 입력, [-a-zA-Z0-9_.]일반적인 입력
  //{2,10} 2~10자 길이

    return regExp.test(asValue);
}

function is_password(asValue) {
    var regExp = /^(?=.*\d)(?=.*[a-zA-Z])[0-9a-zA-Z!@#$%^&*]{8,20}$/;
    return regExp.test(asValue);
}

로그인

@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)  
        }
        token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')

        return jsonify({'result': 'success', 'token': token})
    
    else:
        return jsonify({'result': 'fail', 'msg': '아이디/비밀번호가 일치하지 않습니다.'})
profile
동료들과 함께하는 개발의 중요성에 관심이 많습니다. 언제나 호기심을 갖고 꾸준히 노력하는 개발자로서 성장하고 있습니다.

0개의 댓글