Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 이클립스
- 오라클
- 백준
- 자바
- spring
- 파이썬
- 플라스크
- eclipse
- sql
- flask
- 에러
- mybatis
- rdbms
- javascript
- mysql
- PYTHON
- database
- TIL
- 링크
- 알고리즘
- jQuery
- db
- BOJ
- 자바스크립트
- Git
- 스프링
- java
- Oracle
- 웹프로그래밍
- 데이터베이스
Archives
- Today
- Total
기록과 정리의 공간
[프로젝트] Flask로 게시판 만들기 - 5 본문
Flask로 게시판 만들기 - 5 (참고 강의 링크-인프런 강의)
(공부 하며 기록이 필요한 부분들만 정리함)
- 개발 환경 : windows 10 / Python 3.8.1 / vscode
- 로그인 기능 구현하기 (세션 활용)
1. 로그인 기능 구현하기 (세션 활용)
-
★ HTTP는 클-서간의 연결 상태를 계속 유지하지 않는 무상태(stateless) 프로토콜이다. 즉, 요청 간 사용자 데이터를 저장하는 수단을 제공하지 않는다. 따라서, 세션(은 기본적으로 하나의 요청 정보를 다른 요청에서 기억하게 해줌)을 활용하여 서버에서 클라이언트를 특정할 수 있도록한다.
-
Flask - 세션(Sessions) 활용하기 : (공식 문서 링크)
- 현재 세션에 접근하기 위해서는 flask의 session객체(flask.session)를 사용한다. 세션 객체는 보통 딕셔너리 객체와 상당히 비슷하게 동작한다.
- session.permanent를 True로 지정하면, PERMANENT_SESSION_LIFETIME configuration key에 설정한 값 만큼 session이 유지되게 된다. default값은 timedelta(days=31)(1달)이다. (permanent_session_lifetime에 대한 공식 문서 링크)
- 세션 유지 시간을 지정해주는 이유? 세션은 서버에 저장되는 변수들이다. 사용자가 일정 기간 동안 사이트를 다시 방문하지 않는다면, 이 변수들을 제거해줘야 서버의 자원을 효율적으로 사용할 수 있다. 그러므로 세션의 유지 시간을 지정해주는 것은 중요하다.
-
로그인 기능 구현에 활용하기 - 예시 코드 (전체 코드x , 일부 코드만 가져옴)
from flask import session
from datetime import timedelta
(나머지 import 생략)
(중략)
app.config["SECRET_KEY"] = "abcd" # 예시라 간단한 값으로 지정했지만, 실제로는 이런 단순한 값 사용하면 절대 X
app.config["PERMANENT_SESSION_LIFETIME"] = timedelta(minutes=30) # 세션유지 시간을 30분으로 지정
(중략)
@app.route("/login", methods=["GET", "POST"])
def member_login():
if request.method == "POST":
name = request.form.get("name")
password = request.form.get("pass")
if name == "" or pass1 == "":
flash("입력되지 않은 값이 있습니다!")
return render_template("login.html")
members = mongo.db.members
data = members.find_one({"email": email})
if data is None:
flash("회원 정보가 없습니다!")
return redirect(url_for("member_login"))
else:
if data.get("pass") == password:
# session에 로그인 정보 저장하기
session["email"] = email
session["name"] = dage.get("name")
session["id"] = str(data.get("_id"))
session.permanet = True # 세션 유지 시간 지정을 위해 True로 설정
else:
flash("비밀번호가 일치하지 않습니다!")
return redirect(url_for("member_login"))
return ""
else:
return render_template("login.html")
'프로젝트 > 게시판1' 카테고리의 다른 글
[프로젝트] Flask로 게시판 만들기 - 6 (0) | 2020.08.20 |
---|---|
[프로젝트] Flask로 게시판 만들기 - 4 (1) | 2020.08.04 |
[프로젝트] Flask로 게시판 만들기 - 3 (1) | 2020.08.01 |
[프로젝트] Flask로 게시판 만들기 - 2 (0) | 2020.07.29 |
[프로젝트] Flask로 게시판 만들기 - 1 (0) | 2020.07.29 |
Comments