首先是确认域名服务商提供泛域名服务
然后添加一条A记录"*.youdomain.com"到你的服务器IP的映射
Rails下判断subdomain时用request.subdomains[0]即可得到子域名

而在Firefox下cookie是按不同子域名存储的,所以需要在environment.rb里设置一下:
require 'action_controller'
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => ".yourdomain.com")


还有就是使用restful_authentication这种插件时有一个remember_me选项,手动做cookies的设置时也要加上:domain参数,否则对subdomain还是有问题:
# 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' }


如果subdomain为中文,浏览器会先encode一下,为了避免浏览器不兼容问题,所以最好将subdomain弄成纯字母、数字等
评论
lintide 2008-06-09
非常感谢你!看了你这篇文章终于解决了我的问题。另外,在 environment.rb中的代码也可以改为:
ActionController::Base.session_options[:session_domain] = '.lalixiang.com'
发表评论

您还没有登录,请登录后发表评论

hideto
搜索本博客
我的相册
A6bdc31c-c66e-468e-961e-9cc721e82adc-thumb
screenshot
共 1 张
存档
最新评论