일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 자바 orm
- 스프링부트
- spring websocket nginx 설정
- 개발 프로젝트
- Flask
- @Valid
- 도메인 주도 개발
- S3
- 백준 10815 # 백준 Java
- jwt
- validation
- presigned url
- ec2 nginx websocket reverse proxy
- wss 연결 실패
- 예외 처리
- springboot
- 패러다임 불일치
- GoormIDE
- AWS
- 이미지 업로드
- 소셜 로그인
- CustomException
- fastapi
- logout
- OpenAI API
- session
- 구글 로그인
- oauth2.0
- 관점 지향 프로그래밍
- spring boot
Archives
- Today
- Total
개발세발은 안되요
Flask | 로그인(Login) & 로그아웃(Logout) & 세션(Session) 본문
Session이란?
플라스크에서 로그인 기능을 구현하기 위해서는 세션(session)을 이용해야 한다. 세션은 사용자 정보를 담고있는 객체로, 데이터는 flask에 의 해 암호화된다. 그렇기 때문에 secret key가 필요하다.
세션 외에 사용자 데이터로 쿠키(cookie)도 있지만, 세션은 데이터를 클라이언트 브라우저에 저장한다는 점에서 쿠키와 차이가 있다.
로그인(Login)
1. application.py
우선 id와 pw값을 입력받는다.
id_ = request.form['id'] #id 입력받기
pw = request.form['pw'] #pw 입력받기
우리가 DB에서 비교해야할 실제 pw는 입력받은 pw가 아니라 pw로 만들어낸 해시값이다. 따라서 pw 해시를 만든다.
pw_hash = hashlib.sha256(pw.encode('utf-8')).hexdigest()
아래의 조건문은 로그인의 성공 여부를 확인하는 부분이다.
#DB 등록된 사용자인 경우 <- DB.find_user() 이용
if DB.find_user(id_,pw_hash):
session['id']=id_ #session에 id 정보 넣어주기
return redirect(url_for('list_restaurants')) # 로그인 성공 후 이동할 화면
#DB에 등록되지 않은 사용자인 경우
else:
flash("Wrong ID or PW!") # 로그인 실패 메시지
return render_template("login.html") # 로그인 화면으로 다시 이동
2. database.py
이때 이용할 find_user()은 다음과 같이 작성한다.
로그아웃(Logout)
로그아웃은 application.py에 아래의 코드만 작성해두면 된다.
추가 : 페이지에서 session 참조하기
로그인하기 전과 로그인한 후 페이지에 변화를 주고 싶을 수 있다. 이 경우 페이지에서 session을 참조하면 된다.
베너에 변화를 주는 것을 예로 보이겠다.
index.html 등 원하는 페이지에 session을 참조하는 코드를 작성한다.
'Web' 카테고리의 다른 글
Goormide 이용법 & 공유 컨테이너 & GitHub 연동 (0) | 2022.12.16 |
---|---|
Flask | 동적 라우팅(Dynamic Routing) (0) | 2022.12.16 |