2011-08-26 6 views
2

세션에서 전체 사용자 개체를 할당하려고합니다 ... 나쁘지 않습니까? 레일스는 세션 데이터를 어떻게 저장합니까? 나는 이것이 나쁜 생각이라는 느낌을 가지고있다. 세션에 user_id를 저장해야합니까?레일 세션 도우미 (나쁘다)

module SessionsHelper 
    def sign_in(user) 
    session[:user] = user 
    end 

    def current_user 
    session[:user] 
    end 

    def sign_out 
    session[:user] = nil 
    end 
end 

편집 (I이 더 나은 생각)

module SessionsHelper 
    def sign_in(employee) 
    session[:employee_id] = employee.id 
    @employee = employee 
    end 

    def current_employee 
    if session[:employee_id] 
     @employee||=Employee.first(session[:employee]) 
    end 
    end 

    def sign_out 
    session[:employee_id] = nil 
    @employee = nil 
    end 
end 

답변

8

기본 세션 저장소가 4킬로바이트 크기 제한이 CookieStore, 나쁜 것입니다. 그래서 사용자 객체의 크기에 따라 이것은 나쁜 생각 일 수 있습니다. 쿠키에 모든 정보를 넣을 수 없을 수도 있습니다. 특히 다른 내용이 쿠키에 저장되어있는 경우에 한합니다.

또한 쿠키 세션에서 사용자의 요청/응답 크기를 줄이기위한 정보를 거의 입력하지 않는 것이 좋습니다. 쿠키는 적어도 각각의 새로운 요청/응답과 함께 보내질 것입니다. 적어도 쿠키를 없애기 전까지는 쿠키가 전체 크기에 추가됩니다.

관련 문제