역시 이번 포스팅도 그냥 정리해두기 위해서 작성합니다. 


1. Django 1.8.2 기준입니다. 



2. Django에서 로그인하는 방법에 대해서는 공식홈페이지에 잘 설명되어 있고

    어려운 경우 참고할만한 여러 블로그가 존재합니다. 

    따라서 로그인에 대해서 작성하고자 하는 것은 아니고 Login 했을 때 session 쪽에 대해서 입니다.



3. Django로 만들어진 웹 시스템에 접속하면 아마도 다음과 같은 session이 만들어지는 것 같습니다.

    로그인하지 않았을 때 입니다. Dictionary, 4개의 Key가 존재하네요.


    {'_session_key': None, 'modified': False, 'serializer': <class 'django.core.signing.JSONSerializer'>, 'accessed': False}



4. 로그인하고 바로 session을 출력해보면 다음과 같습니다. 

    딕셔너리를 값으로 가지는 _session_cache 라는 key가 추가되네요. 


    {'_session_cache': {'_auth_user_hash': '284f762ebcbd384602d32f6aef11bd5266ebc4e5', 

                                   '_auth_user_backend': 'django.contrib.auth.backends.ModelBackend', 

                                   '_auth_user_id': u'1'}, 

     '_session_key': u'j61bpzbuosavngu4freifrw9kij48rh3', 'modified': True, 'serializer': <class 'django.core.signing.JSONSerializer'>, 'accessed': True}



5. 로그인할 때 user_id를 기록해두고 session이 유지되는 동안에는 좀 사용해보려고 합니다.

     views.py나 forms.py에 적당히 작성하면 될 것 같네요. 

     저는 forms.py에서 아래와 같은 소스를 추가했습니다.


     request.session["user_id"]=request.POST['id_inputField']


     꼭 위와 같이 하실 필요는 없지만 request.session["key_name"] = value 정도로만 작성하시면 되지 않을까요.



6. 5번 내용을 적용하고 session을 다시 출력해보면 다음과 같습니다. 

    정확하게는 _session_cache의 값인 딕셔너리 안에 추가되네요. 

    위 소스에 의해서 user_id라는 key에 유니코드로 값이 들어가네요. id는 비밀이라  가렸습니다 ㅋㅋㅋ

   자 그럼 이제 다른 곳에서 user_id를 활용하면 되겠습니다.



7. session 만기 시간

    참고 웹페이지 : https://docs.djangoproject.com/en/1.8/ref/settings/


    Django의 settings 파일에 아래와 같은 설정을 추가합니다. 

    SESSION_COOKIE_AGE = 60

    초 단위입니다. 60초가 지나면 session이 만기되네요. 1.8.2에서는 위 한 줄로도 잘 되는 것을 테스트했습니다.


    추가로, 브라우저가 닫히면 session을 종료하라는 설정은 아래와 같다고 합니다. 

    SESSION_EXPIRE_AT_BROWSER_CLOSE=True      (기본은 False로 되어 있다고 해요. 크롬에서는 정상적으로 작동하지 않을 수도 있다고 합니다)

    브라우저 닫힐 때 설정은 테스트해보지 않았습니다. 

    나중에... 

+ Recent posts