TurboGears – 쿠키 및 세션
사용자의 브라우저에 첨부 된 간단한 브라우징 데이터를 보유해야하는 경우가 많습니다. 세션은 가장 일반적으로 사용되는 기술입니다. 세션은 디스크 파일이나 데이터베이스와 같이 더 영구적 인 형태로 저장할 필요가없는 데이터를 나타냅니다.
그러나 TurboGears의 세션 데이터는 파일 시스템, 데이터베이스 또는 해시 된 쿠키 값에 의해 지원 될 수 있습니다. 소량의 세션 데이터는 일반적으로 쿠키에 보관되지만 더 많은 양의 세션 데이터에는 MemCache가 사용됩니다.
MemCache는 시스템 수준 데몬입니다. 캐시 된 데이터에 대한 빠른 액세스를 제공하며 확장 성이 뛰어납니다. 그러나 보안 서버에서만 사용하기위한 것이므로 sysadmin에서 유지 관리하고 보안을 유지해야합니다.
세션 관리의 비커
TurboGears는 세션 관리를 위해 Beaker를 사용합니다. 기어 박스로 빠른 시작하는 프로젝트는 기본적으로 해시 된 쿠키를 사용하여 세션 데이터를 저장하도록 구성됩니다.
클라이언트가 연결할 때마다 세션 미들웨어 (Beaker)는 구성 파일에 정의 된 쿠키 이름을 사용하여 쿠키를 검사합니다. 쿠키가 발견되지 않으면 브라우저에서 설정됩니다. 이후의 모든 방문에서 미들웨어는 쿠키를 찾아 사용합니다.
세션 관리를 활성화하려면 다음 import 문을 통해 세션 클래스를 프로젝트에 통합해야합니다.
from tg import session
세션 변수에 데이터를 저장하려면-
session[‘key’] = value
session.save()
세션 변수를 검색하려면-
return session[‘key’]
해당 세션에 키를 저장하려면 세션을 명시 적으로 저장해야합니다.
그만큼 delete() 세션 객체의 메소드는 모든 사용자 세션을 삭제합니다-
session.delete()
주어진 프로덕션 환경에서 모든 사용자 세션을 삭제하는 것이 관례는 아니지만 일반적으로 사용성 또는 기능 테스트가 완료된 후 정리를 위해 삭제합니다.
다음은 세션을 보여주는 간단한 예입니다. RootController 클래스에는setsession() 세션 변수를 설정하는 메소드.
from hello.lib.base import BaseController
from tg import expose, session
class RootController(BaseController):
@expose()
def setsession(self):
session['user'] = 'MVL'
session.save()
str = "<b>sessionVariable set to "+session['user']
str = str+"<br><a href = '/getsession'>click here to retrieve</a></b>"
return str
@expose()
def getsession(self):
return "<b>value of session variable retrieved " +session['user'] +"</b>"
시작하다 http://localhost:8080/setsession
브라우저의 링크는 http://localhost:8080/getsession 세션 변수를 검색하고 표시합니다.