2013-06-25 3 views
0

시작시 DB에서 읽는 클래스가 있습니다. 나는 그것을 세션에 저장할 수있게하고 싶지만 이렇게하려고 할 때 다음 오류가 발생합니다. 오류 TypeError : marshal_dump 클래스가 정의되지 않았습니다. 가능한지/적당합니까? 그렇다면 어떻게해야합니까? 그렇지 않은 경우 세션에 클래스 인스턴스를 저장하는 대신 좋은 방법이 있을까요? 현재 내 해결 방법은 단지 그것을 사용할 필요가있을 때마다 인스턴스화하는 것이지만, 좋은 솔루션 또는 확장 할 수있는 것으로는 저를 공격하지 않습니다.Padrino가있는 세션 서버쪽에 클래스 인스턴스를 저장 하시겠습니까?

답변

1

좋은 대안은 세션의 레코드 ID를 저장하는 것입니다. 그런 다음 다시 데이터가 필요하면 헬퍼를 사용하여 메모리 또는 데이터베이스에서 데이터를 반환합니다. 완벽한 예제는 많은 루비 인증 보석에서 발견되는 current_user 도우미 메소드에서 사용되는 패턴입니다. 병목 현상이 발견되면 캐시도 메인을 사용하도록이 도우미를 수정할 수 있지만 사실 이후에는 최적화로 남겨 두었습니다.

세션에서 행복하게 살 수있는 마샬링 된 형식으로 개체를 가져와야하는 경우 저장소 공간에 문제가 발생하고 데이터가 오래되어 기밀 데이터에 의도하지 않은 노출이 발생할 수 있습니다.

관련 문제