2021. 8. 6. 00:30ㆍSERVER/Flask
추가 공부 키워드
: 권한 (Authorization), session
인증 (Authentication)
클라이언트가 서버로부터 누구인지 확인하는 절차
- 회원가입 → 로그인, Database에 사용자 정보 입력 (Create)
- 로그인 ─ ID / PW → 서버, Database의 정보와 입력정보 비교 (Read)
- 로그아웃, 인증정보 파기
[쿠키]
클라이언트에 저장되는 Key: value가 들어 있는 데이터
사용자가 따로 요청하지 않아도, Request 시 자동으로 서버에서 전송
서버 ─ ( Cookie ) → 클라이언트 (자신의 컴퓨터, 웹 브라우저에 저장)
[세션]
쿠키를 기반으로 하지만 서버 측에서 관리하는 데이터
클라이언트에 고유 ID를 부여하고 클라이언트에 맞는 서비스를 제공
서버에서 관리하기 때문에 쿠키보다 보안측면에서 좋다
[index.html]
Login : login.html로 이동하며, login API를 통해 요청을 처리
(이미 생성된 정보를 비교하는 과정, 로그인 과정에서 세션 발급)
Register : register.html로 이동하며, register API를 통해 요청을 처리
(사용자의 데이터를 입력받아 계정을 생성하는 과정)
[계정 생성]
현재 DB에 연결하여 진행하는 실습이 아니기 때문에, 딕셔너리에 데이터를 담아서 저장
사용자의 민감한 데이터를 취급하는 과정이기 때문에 POST로 요청
<input type = "submit" />
submit 옵션은 버튼의 클릭과 동시에 입력받은 데이터를 전달하는 역할
login.hrml에서 POST Method로 요청이 들어온다면 if문을 아니라면 else를 수행
입력받은 username과 password를 userinfo 딕셔너리에 key: value 형태로 추가
이후 login 페이지로 redirect 된다
해당 실습에서는 별다른 조건이 없기 때문에 key: value가 빈 상태여도 계정이 생성되는데,
이를 방지하고 싶다면 별도의 조건을 만들어서 None이라면 생성이 되지 않도록 만들면 된다
[로그인]
* 해당 실습 정도의 규모, 동작방식에서는 굳이 try, except이 필요하지 않다
하지만, 더 복잡한 방식의 인증절차나 규모가 큰 App의 인증 절차를 담당한다면
잘 사용시 혹시 모를 예외사항들에 대해 사전에 방지할 수 있다
if name in userinfo:
if userinfo[name] == password:
session['logged_in'] = True
return redirect(url_for('home'))
userinfo의 key 값이 name이기 때문에 key 값이 딕셔너리에 있는지 없는지를 확인
있다면 key의 value 값과 입력된 password 값이 일치하는지를 확인하는 과정
만약 일치한다면, session을 발급해주고 home으로 redirect를 시켜준다
* session은 Flask에서 제공해주는 모듈로 서버에서 사용자의 정보를 저장하는 역할을 담당
[로그아웃]
로그아웃은 별도의 페이지나 값을 전달받을 필요가 없다
사용자가 더이상 권한을 유지하지 않고 해당 페이지에서 떠나겠다는 것을 의미
서버 입장에서도 사용자의 인증 정보를 가지고 있을 필요가 없기 때문에 세션을 파기한다
로그인 과정에서 True로 발급받았던 세션을 False로 파기
더이상 서버는 사용자를 구분할 능력이 없기 때문에 모든 정보가 사라지고 메인으로 이동
'SERVER > Flask' 카테고리의 다른 글
8. Flask (RDB) (0) | 2021.08.12 |
---|---|
7. Flask (logging) (0) | 2021.08.06 |
5. Flask (CRUD) (0) | 2021.08.05 |
4. Flask (Blueprint, Jinja Template) (0) | 2021.08.05 |
3. Flask (HTTP Method) (0) | 2021.08.05 |