세션은 서버가 클라이언트(웹브라우저)를 인지하게 하는 인증정보.
로그인하는 순간 서버가 세션을 생성.
세션만료? -> 일반적으로 세션만기(expire)시점은 웹브라우저 종료시까지이다.
웹브라우저에 따라 세션 생성.
웹브라우저 안에 쿠키를 구워놓는다. -> 자동로그인이나 아이디 저장
단, 좌석 예매, 티켓 예매같은 경우에는 10분 내지는 20분으로 제한하기도 한다.
세션은 어떻게 생성?
서버에서 그냥 변수를 하나 만든다.
def join( req ) :
#id라는 세션 변수를 생성
req.session["id"]= req.POST.get("id")
req.session["pw"]= req.POST.get("pw")
세션저장 : req.session['키'] = 값
세션로드 : req.session.get('키') = 값
세션삭제 : req.session.pop('키') = 값
def logged( req ) :
logged_member = User.objects.filter(userid=req.POST.get('id'), password=req.POST.get('pwd'))
if logged_member :
#로그인 성공
req.session['userid'] = req.POST.get('id')
else :
#로그인 실패
print("로그인 실패")
return render( req, 'unlogged.html', { 'err' : '잘못된 정보입니다.' } )
def check_logged (req) :
if req.session.get('userid') :
return render( req, 'logged.html', { 'id' : req.POST.get('id')} )
def logout(req):
req.session.pop('userid')
return render(req, 'login.html')
#아이디 중복확인
<form id="form_all" action="">
<label></label> <input type="text" name="id" id="abcd"> <button type="button" onclick="checkid();">중복확인</button>
<label></label> <input type="text" name="pw">
<label></label> <input type="text" name="newpw">
<button type="submit">전송</button>
</form>
// bootstrap에 있는 d-none
<form class="d-none" action="아이디 중복 확인" id="form_check_id">
<input type="hidden" name="id">
</form>
<script>
function checkid(){
// 이 함수
var form = document.getElementById( "form_check_id" );
form.id = $( "#abcd" ).val();
form.submit();
}
</script>
return redirect('../main') // urls.py에 정의한 경로로 이동하게 해준다. -> return render하면 계속 html은 반복되고 주소는 달라지니깐 헷갈려.. 그러니깐 redirect 쓰는거지..
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them.
python3 manage.py migrate 입력하기
admin 로그인 안되면 putty에서 superuser 만들어야함
root@yookeunbyul:~/yook-django/my_homepage# python3 manage.py createsuperuser
사용자 이름 (leave blank to use 'root'):
이메일 주소:
Password:
Password (again):
Superuser created successfully.
model.py 수정할 때마다 마이그레이션 및 마이그레이트 계속 해야되나요?
-> 안전빵으로..
python3 manage.py makemigrations
python3 manage.py migrate
sudo fuser -k 8000/tcp (8000 포트와 연관되어 있는 모든 프로세스 종료)
로그인 시점에 세션을 생성하여 임의의 경로로 접속하였을때
1-1. 세션이 없다면 -> "로그인 먼저 해주세요" 메세지 출력
1-2. 세션이 있다면 -> "OOO님 환영합니다" 메세지 출력
각자 자유롭게 사이트 만들기 (ex-쇼핑몰 등)
def logged( req ) :
logged_member = User.objects.filter(userid=req.POST.get('id'), password=req.POST.get('pwd'))
if logged_member :
print("로그인 성공")
req.session['userid'] = req.POST.get('id')
return render( req, 'logged.html' )
else :
print("로그인 실패")
return render( req, 'login.html' )
def check_logged ( req ) :
if req.session.get('userid') :
print("로그인 성공")
return render( req, 'logged.html' )
else :
print("로그인 실패")
return render( req, 'login.html' )
def logout ( req ) :
req.session.pop('userid')
print("세션 삭제")
return render(req, 'login.html')