Rails中的Cookie是否基于网站(基于应用)?

时间:2014-04-23 15:48:30

标签: ruby-on-rails cookies

我决定在cookie级别处理我的应用程序中的会话,所以我有一个看起来像这样的会话控制器:

  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 gem。

在这两个应用之间共享

我的问题是:

site.com中创建的Cookie,可用于product1.site.com,因此允许我在current_user中使用特定帮助方法,例如product1.site.com来查看是否用户已登录?

目的是如果用户A未登录site.com他们无法访问product1.site.com

1 个答案:

答案 0 :(得分:1)

RFC 6265在第4.1.2.3节中有答案。如果Cookie域属性设置为 dom.ain ,则在向 dom.ain www.dom发出请求时,用户代理会发送Cookie。 ain sub.dom.ain ,以及 dom.ain 的其他子域。您可以通过Cookie哈希中的域密钥控制cookie域属性,例如

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