簡體   English   中英

會話變量被重置-不確定它在哪里發生

[英]Session variable getting reset - not sure where it is happening

我通過將事件存儲在會話變量中,然后將它們傳遞到后續頁面的kissmetrics javascript代碼中,在我的rails應用程序上安裝Kissmetrics。 除了嘗試跟蹤創建的帳戶外,此方法非常有用。 看來,當我將帳戶創建的事件存儲在會話變量中時,它可以正常工作,但是到下一頁加載時,會話變量就消失了。 我將調試器放在其中以嘗試查找要刪除的位置,但似乎什么也沒有。 km_log_event是一種將字符串存儲在稱為km_events的會話變量中的方法。 這是我的代碼:

account_controller / create->

...    
if @account.save 
            log_event("Account", "Created", @account.name)
            km_log_event("Account Created")
            redirect_to(welcome_url(:subdomain => @account.subdomain)) 
            @user.activate!
            @user.add_connection(params[:connect_to])
          else
            render(:action => 'new', :layout => 'signup')
          end
...

session_controller /歡迎->

def welcome
    if current_account.new?
      # Create the session for the owner, the account is brand new
      current_account.user_sessions.create(current_account.owner, true)
    elsif current_account.users.last && current_account.users.last.created_at > 1.hour.ago
      current_account.user_sessions.create(current_account.users.last, true)
    end
    redirect_to embedded_invitations_path
  end

我只是不確定要在哪里刪除它,所以我無法記錄此事件。 它似乎發生在帳戶控制器中的@ account.save之后,但在歡迎操作之前。

更新:

這是我認為(這不是我的代碼庫)current_account定義的帳戶模塊。

module Accounts
    def self.included(controller)
        controller.helper_method :current_account
    end

    protected

        def current_account
            return @current_account if defined?(@current_account)
            @current_account = Account.find_by_subdomain!(current_subdomain)
        end
end

無效的csrf令牌將重置會話。 這會發生嗎?

您可以通過從控制器中刪除以下內容(通常在ApplicationController中)輕松地進行測試

  protect_from_forgery

我認為這是在您嘗試在子域之間共享會話時發生的。 為此,您必須進行一些配置。

是否在帶有/不帶有自定義域的Heroku上引用子域會話在Rails 2.3和Rails 3中不起作用?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM