flask web app 에 login 기능추가하기

조회수 36회

현재 가지고 있는 예제는 없습니다ㅜㅜ flask로 web 을 작성하려는데 flask-login이나 기타 flask에서 제공하는 login 모듈을 사용하지 않고 처음부터 작성해서 login 기능을 만들고 쿠키가 아닌 session으로 로그인 관리하여 db랑 연동해야되는데 쉬운 예제 하나만 만들어주실 수 있을까요...

1 답변

  • 저는 flask에 있는 session 기능을 이용해서 로그인을 구현했었어요..

    허접하지만 session[id]=True/False로 구분지어서 True일때만 로그인 기능 유지하도록 했었는데, 아래 로직 입니다. 도움되셨으면 좋겠네요.

    from flask import session, request, jsonify
    from db import Login
    
    #유저 생성
    @flask.route('/users', methods=['POST'])
    def UserCreate():
       id = request로 id
       pw = request로 pw
    
       #디비에 유저 저장.
       db_session.add(Login(Id=id, Password=pw))
       db_session.commit()
       return jsonify(Ture)
    
    #로그인
    @flask.route('/users/login', methods=['POST'])
    def UserLogin():
       id = request로 id
       pw = request로 pw
    
       #디비 데이터와 id,pw 비교
       #맞으면 session 생성
       if 디비일치:
       session[id]=True # 로그아웃 때 False
       return jsonify(True)
    
       else:
       return jsonify(False)
    
    #로그아웃
    @flask.route('/users/logout', methods=['POST'])
    def UserOut():
       id = request로 넘어온 로그 아웃 id
    
       session[id]=False
       return jsonify(True)
    
    #유저 확인
    @flask.route('/user/restore', methods=['POST'])
    def UserCheck():
       id = request로 넘어온 활동중인 id
    
       #session이 True 이면 계속 False이면 제한.
    
    
    
    • 제가 sqlachemy나 작업에 필요한 문법을 거의 모르는 1달좀 넘음 완전 초보인데요 flask에서 render template해서 가져온 html양식에서 아이디 비빌번호를 입력하면 저장되어있는 db의 데이터랑 비교하여 일치하면 로그인하고 아닐 시 다시 로그인 시도해주세요라고 뜨게끔 하고싶구요 db 저장은 암호화해서 저장시켜야되는데 예를 들어 비밀번호를 qwe123으로 입력했을 때 12ajnfnwue0128njsod....이런식으로.... 제가 db에 연결할 줄도 모르고 할줄아는게 flask 화면만 열어서 render_template으로 html문서 연결하는 게 끝입니다 post get 도 잘 못하구요...상세하게 설명해주실 수 있을까요? 김재민 2019.5.15 08:35
    • 답변이 늦었습니다ㅠ , 저도 초보라서 위 답변 이상은 힘드네요.. 그리고 구글 검색창에 flask post, get만 처도 블로그에 아주 자세하게 나오네요.. 제가 설명할 수 있는 것 이상으로요ㅎ jaeuk412 2019.5.20 13:38

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

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.