apache, 파이썬으로 웹 로그인 구현 가능한가요??, 또한 입력은 어떻게 받아야할까요??

조회수 378회

아파치를 사용해 간단하게 html 파일을 보여주거나 python 스크립트의 결과를 표시하는것에는 성공했습니다. 로그인을 구현해보고 싶지만 모르는것이 많네요..

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 도대체 로그인이란 무엇인가?? 저도 예전에는 로그인이란 게 라이브러리를 안쓰면 안되는 마법 같은 건 줄 알았는데.. 사실 별거 없습니다. 어디 페스티벌 가면 왼손 손목에 종이팔찌를 둘러주죠? 그 작업이 로그인입니다.

    1. 손님이 페스티벌 공연장("site")에 도착합니다. 광고("banner")도 걸려있고 간판("title")도 걸려 있고 아주 난리가 났군요.
    2. 손님이 "예매하신 분은 여기로"라 써 있는 곳에 갑니다.
    3. 직원이 손님의 신분증이나 휴대폰 번호 같은 것을 물어봅니다.
    4. 손님이 직원에게 요청받은 정보를 제공합니다.
    5. 직원이 예매 손님 명단 전산망에서 해당 정보로 손님을 찾아봅니다. 손님을 찾을 수 없으면 "예매 안 하신 거 같은데요?"라고 답하고 돌려보냅니다. 손님이 2명 이상 확인되면, 직원은 일단 당황한 다음, 매뉴얼에 따라 추가 절차를 이행합니다.
    6. 손님이 1명 확인되면, "XX님 안녕하세요 지금 입장권 드릴께요" 한 다음, 그 손님에게만 적용되는 고유한 코드가 담긴 바코드를 종이팔찌에 인쇄해서, 그걸 손목에 둘러줍니다.
    7. 이제 손님은 메인게이트나 기타 예매회원 전용 서비스 코너로 갑니다.
    8. 손님은 그 바코드만 찍습니다. (바코드만 제공하는 것입니다. 자기 신분증, 휴대전화 번호 등을 다시 제공하지 않습니다.)
    9. 손님은 자기가 예매한 회원임을 확인받은 다음 페스티벌을 즐깁니다. 재미있겠군요.

    상기 현실상황에서의 사례를 로그인 절차로 치환하면 다음과 같습니다.

    1. 사용자는 로그인을 하고 싶다고 요청한다.
    2. 서버는 사용자의 요청에 따라, 일단 크리덴셜(credential, 개인 식별 비밀 정보, 아이디 이메일 비번 같은것들)을 입력받는 인터페이스를 제공하고 입력을 기다린다.
    3. 사용자는 제공된 인터페이스에 크리덴셜을 입력한다.
    4. 서버는 사용자의 입력을 가지고 (DB 조회 등을 통해) 사용자의 존재 여부 및 그 갯수를 확인한다.
    5. 1개만 확인이 되면, 지금 이 입력을 한 사용자가 바로 그 사용자이므로, 이 사용자에게만 고유하게 매칭되는 임의의 데이터를 제공한 다음, 그 데이터의 소유자는 바로 그 사용자라는 사실을 기억한다. (이걸 authentication이라고 합니다.)
    6. 이제 사용자는 서버로부터 받은 데이터만 필요할 때마다 제출함으로써, 자기가 바로 그 사용자라는 사실을 확인받을 수 있다. (이걸 authorization이라고 합니다.)

    즉, 다음 요건들만 충족되면 "로그인"은 무조건 구현 가능합니다.

    • 사용자의 입력을 받을 수 있는가?
    • 받은 입력을 사용자 정보와 매칭할 수 있는가?
    • 매칭된 사용자 정보는 그 입력으로만 획득 가능한 정보인가? (즉, '사칭'이 불가능한가?)
    • 임의의 난수 데이터를 생성할 수 있는가?
    • 그 난수 데이터를 특정 고유한 사용자와 매칭할 수 있는가?
    • 그 난수 데이터를 사용자에게 제공할 수 있는가?
    • 그 난수 데이터를 필요할 때마다 사용자의 입력으로서 받을 수 있는가?

    자 이제 질문에 답을 드릴께요.

    apache, 파이썬으로 웹 로그인 구현 가능한가요??

    네. 아마도 제일 쉽고 잘 알려져 있는 구현 방식으로서 말하자면, '인증' 절차를 처리하기 위해서는, "요청 헤더"라는 것에 들어 있는 Cookie라고 하는 것에 들어 있는 뭔가를 복호화하거나 서버 세션 파일과 매칭하는 작업을 하시게 될 겁니다. (여기서의 맥락상 쿠키는 종이팔찌에 해당합니다. 손님이 그걸 찢는 순간, 그러니까 쿠키를 삭제하는 순간부터, 사용자는 로그아웃되며, 더이상 페스티벌 예매 손님이 아니게 됩니다.)

    입력은 어떻게 받아야할까요??

    정답은 없습니다. 그냥 어떻게든 받으면 됩니다. 제일 간단한 시나리오를 생각해 보자면 <form method="POST" action="/login">이라는 웹폼을 통해서 사용자의 이메일, 비밀번호 등을 입력받게 될 겁니다.

    이제 구글에다 대고 python auth라고 검색해서 이것저것 살펴보시면, 플라스크라는 프레임워크 위에서 구현하는 방법도 있고 그냥 Requests 모듈 가지고 날로 만드는 방법도 있고 다양하게 나옵니다. 하지만 결국 핵은 다 똑같기 때문에 뭘 해야 되는지 감이 오실 겁니다. (애초에, 제 경험상, 로그인 구현이라는 건 기술적인 디테일보다는 전체적인 얼개를 이해하는 게 훨씬 더 중요합니다. 그것만 이해하면 코딩은 큰 장애물이 안 됩니다. 그래서 위에서 장황히 설명 드렸구요.)

    시도해 보세요!

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)