首先是确认域名服务商提供泛域名服务
然后添加一条A记录"*.youdomain.com"到你的服务器IP的映射
Rails下判断subdomain时用request.subdomains[0]即可得到子域名
而在Firefox下cookie是按不同子域名存储的,所以需要在environment.rb里设置一下:
[code]
require 'action_controller'
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => ".yourdomain.com")
[/code]
还有就是使用restful_authentication这种插件时有一个remember_me选项,手动做cookies的设置时也要加上:domain参数,否则对subdomain还是有问题:
[code]
# sessions_controller.rb
cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at, :domain => '.yourdomain.com' }
# authenticated_system.rb
cookies[:auth_token] = { :value => user.remember_token, :expires => user.remember_token_expires_at, :domain => '.yourdomain.com' }
[/code]
如果subdomain为中文,浏览器会先encode一下,为了避免浏览器不兼容问题,所以最好将subdomain弄成纯字母、数字等
然后添加一条A记录"*.youdomain.com"到你的服务器IP的映射
Rails下判断subdomain时用request.subdomains[0]即可得到子域名
而在Firefox下cookie是按不同子域名存储的,所以需要在environment.rb里设置一下:
[code]
require 'action_controller'
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => ".yourdomain.com")
[/code]
还有就是使用restful_authentication这种插件时有一个remember_me选项,手动做cookies的设置时也要加上:domain参数,否则对subdomain还是有问题:
[code]
# sessions_controller.rb
cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at, :domain => '.yourdomain.com' }
# authenticated_system.rb
cookies[:auth_token] = { :value => user.remember_token, :expires => user.remember_token_expires_at, :domain => '.yourdomain.com' }
[/code]
如果subdomain为中文,浏览器会先encode一下,为了避免浏览器不兼容问题,所以最好将subdomain弄成纯字母、数字等