복붙노트

[RUBY-ON-RAILS] 레일 응용 프로그램에서 쿠키 오버 플로우?

RUBY-ON-RAILS

레일 응용 프로그램에서 쿠키 오버 플로우?

내가 페이지를 열 때이 오류가 있습니다. 이 오류를 디버깅하는 방법을 모르겠어요. 당신은이 문제에 대한 어떤 제안이 있습니까?

def create
  @user = User.new(params[:user])
  sign_in @user

  if @user.save
    @user.folders.create(:folder_name=>"Default Folder", :user_id=>@user.id)
    flash[:success] = "Welcome to Bunch<it>! "
    redirect_to @user
  else
    @title = "Sign up"
    render 'new'
  end
end


def sign_in(user)
  cookies.permanent.signed[:remember_token] = [user.id, user.salt]
  session[:current_user] = user
  current_user = user
end

해결법

  1. ==============================

    1.당신은 당신이 쿠키에 저장할 수있는 일에 4킬로바이트 제한을 가지고, 그리고 레일이 그 한계보다는 아마 더 큰 쿠키에 기록 텍스트로 개체를 변환 할 때.

    당신은 당신이 쿠키에 저장할 수있는 일에 4킬로바이트 제한을 가지고, 그리고 레일이 그 한계보다는 아마 더 큰 쿠키에 기록 텍스트로 개체를 변환 할 때.

    레일 ActionDispatch에 루비 :: 쿠키 :: CookieOverflow 오류

    그 방법이 CookieOverflow 오류가 발생합니다.

    이 일을 해결하는 가장 쉬운 방법은 당신이 당신의 session_store을 변경할 필요하고 cookie_store를 사용하지 않는 것이다. 당신은 예를하여 active_record_store을 사용할 수 있습니다.

    다음 단계입니다

    당신은 세 단계를 완료 한 후 응용 프로그램을 다시 시작합니다. 레일은 현재 세션 데이터를 저장하는 세션 테이블을 사용합니다, 당신은 4킬로바이트 제한이 없습니다.

  2. ==============================

    2.만들려면 : 레일 4/5에 active_record_store 기능 작동, 당신은 당신의 Gemfile에 액티브 - session_store 보석을 추가해야합니다 :

    만들려면 : 레일 4/5에 active_record_store 기능 작동, 당신은 당신의 Gemfile에 액티브 - session_store 보석을 추가해야합니다 :

    gem 'activerecord-session_store'
    

    다음 마이그레이션 생성기를 실행합니다

    rails generate active_record:session_migration
    rake db:migrate
    

    그리고 마지막으로 설정 / 초기화 / session_store.rb에 세션 저장소를 설정합니다 :

    Rails.application.config.session_store :active_record_store, :key => '_my_app_session'
    

    최신 정보:

    사람이 열 "SESSION_ID"에 널 (null) 값을 수신하는 경우 레일 4하지 null이 제약 메시지가 GitHub의에서 해결있다 위반 (테스트하지). 자료 : 당신은 액티브 :: SessionStore :: Session.attr_accessible으로 초기화를 만들려면해야 SESSION_ID

  3. ==============================

    3.오류 메시지가 명확하게 오버 플로우의 쿠키 저장 크기로 문제가 있음을 나타냅니다.

    오류 메시지가 명확하게 오버 플로우의 쿠키 저장 크기로 문제가 있음을 나타냅니다.

    (쿠키에 기본적으로) 귀하의 세션은 활성 레코드로 이동해야 상점 또는 memcache에 저장소가이 문제를 해결합니다.

    데이터베이스 세션의 경우 :

    config.action_controller.session_store = :active_record_store
    

    아래로 세션 테이블을 만들어야합니다

    rake db:sessions:create
    rake db:migrate
    

    또는

    Memcache는 세션의 경우 :

    config.action_controller.session_store = :mem_cache_store
    

    또한 당신은 설정에 MEM 캐시 서버가 필요하고 다음과 같이 구성 :

    config.cache_store = :mem_cache_store, 'localhost', '127.0.0.1:11211',
    {:namespace => 'myapp123'}
    
  4. ==============================

    4.이 세션에서 모델 객체를 저장하는 것은 좋은 생각이 아니다.

    이 세션에서 모델 객체를 저장하는 것은 좋은 생각이 아니다.

    이 주제에 대한이 railscast을 체크 아웃 : http://railscasts.com/episodes/13-dangers-of-model-in-session?autoplay=true

    이 세션 내부의 아이디 (이 경우 사용자의 ID)를 저장하는 더 좋습니다. 그런 다음이 문제가되지 않습니다.

    (위 참고 항목 프레드릭 청 주석).

  5. ==============================

    5.이 표시되는 경우, 일부 세션 데이터를 폭파하지 않을 있는지 확인하십시오. 내 경우, 플래시 메시지로 펌핑 동일한 메시지의 수천이었다. 그냥 말.

    이 표시되는 경우, 일부 세션 데이터를 폭파하지 않을 있는지 확인하십시오. 내 경우, 플래시 메시지로 펌핑 동일한 메시지의 수천이었다. 그냥 말.

    난 당신이 생각하는 경우 솔루션 (다른 답변 주소의 대부분으로), 당신은 아마 더 나은 당신이 실제로 쿠키에 넣어하는지 다시 생각 떨어져있어 쿠키 저장소가 더 큰 수 있도록하는 것입니다 추가 할 것입니다. 당신은 90 년대에 인증 토큰, 세션 ID의, 그리고 아마도 몇 가지 레이아웃 / 쿠키를 추적, 당신이있는 거 삶의 몇보다 더 필요합니다.

  6. ==============================

    6.당신은 사용자 모델을 직렬화하려고하기 때문 오류입니다 쿠키에 객체를 저장할 때, 레일은 사용자 레코드에 그것의 모든 때문에 많은 양의 컨텐츠를 생성 할 수 있습니다 Marshal.dump를 사용합니다

    당신은 사용자 모델을 직렬화하려고하기 때문 오류입니다 쿠키에 객체를 저장할 때, 레일은 사용자 레코드에 그것의 모든 때문에 많은 양의 컨텐츠를 생성 할 수 있습니다 Marshal.dump를 사용합니다

    [: CURRENT_USER] = 단지 사용자의 ID를 저장하는 사용자 시도가 다음 방법 그런에서 사용자를 검색하는 방법을 대신 세션과 실제 사용자 레코드를 저장 예를 들면

    def sign_in(user)
      ...
      session[:current_user_id] = user.id
    end
    
    def current_user
      @current_user ||= User.find(session[:current_user_id])
    end
    
  7. ==============================

    7.나는 사양을 실행중인 경우이 오류가 나를 위해 나타났다. 2.x 또는 3.0에 1.x에서에서 카피 바라를 업데이트 한 후 그냥 레이크의 tmp : 명확한 그것을 해결했다.

    나는 사양을 실행중인 경우이 오류가 나를 위해 나타났다. 2.x 또는 3.0에 1.x에서에서 카피 바라를 업데이트 한 후 그냥 레이크의 tmp : 명확한 그것을 해결했다.

  8. from https://stackoverflow.com/questions/9473808/cookie-overflow-in-rails-application by cc-by-sa and MIT license