2014-04-23 58 views
0

我決定來應對我的Cookie級應用程序會話,所以我有一個會話控制器,看起來像:在Rails網站基礎(基於應用程序)的餅乾?

module Xaaron 
     class SessionsController < ApplicationController 

     def new 
     end 

     def create 
      user = Xaaron::User.authenticate_user(params[:user_name], params[:password]) 
      if sign_in(user) 
      if params[:remember_me] 
       cookies.permanent[:auth_token] = user.auth_token 
      else 
       cookies[:auth_token] = user.auth_token 
      end 
      flash[:notice] = "Welcome back, #{user.first_name}." 
      redirect_to root_path 
      else 
      flash[:alert] = "You have entered incorrect credentials." 
      redirect_to login_path 
      end 
     end 

     def destroy 
      cookies.delete(:auth_token) 
      redirect_to root_path 
     end 
     end 
    end 

我的應用程序是怎樣的一個「守門人」的應用,以便用戶可以登錄如site.com,然後從那裏去product1.site.com,他們的信息,如用戶名,API密鑰,所有爵士樂在這兩個應用程序之間通過promiscuous寶石共享。

如何過我的問題是:current_userproduct1.site.com,看是否表示用戶登錄:

的餅乾在site.com存活在product1.site.com使用從而允許我用特定的helper方法,如產生的?

這樣做的目的是,如果用戶A未登錄site.com他們無法訪問product1.site.com

回答

1

RFC 6265具有第4.1.2.3答案。如果cookie域屬性被設置爲dom.ain,則cookie被由用戶代理作出請求時dom.ain送出,www.dom.ainsub.dom.ain,和其他子域名爲dom.ain。您可以通過cookies散列中的域密鑰控制cookie域屬性,如下所示:

cookies.signed[:secure_session] = {domain: 'dom.ain', value: "#{user.salt}#{user.id}"}