# Dynamic session domain using Rack

**URL:** <https://www.ruby-forum.com/t/dynamic-session-domain-using-rack/173216>\
**Category:** Rails\
**Created:** [August 5, 2009, 2:49am UTC](https://www.ruby-forum.com/t/dynamic-session-domain-using-rack/173216 "2009-08-05T02:49:34Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![vineire77](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/e9c0ed/32.png) [@vineire77](https://www.ruby-forum.com/u/vineire77)\
**Post date:** [August 5, 2009, 2:49am UTC](https://www.ruby-forum.com/t/dynamic-session-domain-using-rack/173216/1 "2009-08-05T02:49:34Z")

</div>

Rails: 2.3.3

Overview: I want to enable cross domain session support. Eventually,  
I’ll have several domains for users to choose from, i.e.  
[user.domain1.com](http://user.domain1.com) or [user.domain2.com](http://user.domain2.com). I’ve borrowed from the code below,  
but it doesn’t seem to be working.

In middleware:

class SetCookieDomain

def initialize(app, default\_domain)  
@app = app  
@default\_domain = default\_domain  
end

def call(env)  
host = env[“HTTP\_HOST”].split(‘:’).first  
env[“rack.session.options”][:domain] = custom\_domain?(host) ?  
“.#{host}” : “#{@default\_domain}”  
@app.call(env)  
end

def custom\_domain?(host)  
domain = @default\_domain.sub(/^./, ‘’)  
host !~ Regexp.new(“#{domain}$”, Regexp::IGNORECASE)  
end  
end

In environment.rb:

config.load\_paths += %W(#{RAILS\_ROOT}/app/middlewares)

In development.rb:

config.middleware.use “SetCookieDomain”, “.mydomain.com”
