0903 SeSAC(새싹) 3기 14일차

육은별·2021년 9월 3일
0

SeSAC(새싹)

목록 보기
14/31

Session

세션은 서버가 클라이언트(웹브라우저)를 인지하게 하는 인증정보.
로그인하는 순간 서버가 세션을 생성.

세션만료? -> 일반적으로 세션만기(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. 세션이 없다면 -> "로그인 먼저 해주세요" 메세지 출력
    1-2. 세션이 있다면 -> "OOO님 환영합니다" 메세지 출력

  2. 각자 자유롭게 사이트 만들기 (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')
profile
Front-end Engineer, Web Developer & UX/UI Design

0개의 댓글

관련 채용 정보