Rails和Sinatra共享会话不工作



我正在尝试在Rails 3.2应用程序和Sinatra应用程序之间共享会话,但它不工作。如果我进入domain.com/rails并登录,它登录成功。然后我转到domain.com/sinatra,会话显然没有被共享。也在那之后,如果我再次尝试访问domain.com/rails,我已经以某种方式注销了。有什么想法,为什么这可能不工作,或者为什么我通过访问sinatra应用程序注销?

配置初始化/secret_token.rb

secret_file_path = "#{Rails.root}/session_key"
secret_key = "SECRET_KEY"
if File.exist? secret_file_path
  secret_key = File.read(secret_file_path).chomp
end
Wtf::Application.config.secret_token = secret_key

配置初始化/session_store.rb

Wtf::Application.config.session_store :cookie_store, key: 'KEY_NAME'

config.ru

require "rack/jekyll"
builder = Rack::Builder.new do
  map '/' do
    run Rack::Jekyll.new(destination: '/_site')
  end
  require ::File.expand_path('/rails/config/environment',  __FILE__)
  map "/rails" do
    run RAILSAPP::Application
  end
  require '/sinatra_app/app.rb'
  map "/sinatra" do
    secret_file_path = '/rails/session_key'
    secret_key = "SECRET_KEY"
    if File.exist? secret_file_path
      secret_key = File.read secret_file_path
    end
    use Rack::Session::Cookie, key: "KEY_NAME",
                           secret: secret_key
    run SinatraApp
  end
end
run builder

这可能有点太简单了,但是您的sinatra secret_key可能只是有一个尾随换行符或其他东西吗?在rails示例中调用chomp,但在sinatra示例中不调用。

注意:注意使用flash,如果你让它工作

最新更新