我正在尝试在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
答案 0 :(得分:2)
这可能有点过于简单了但是你的sinatra secret_key可能只是有一个尾随的换行符或什么? 你可以在rails示例中调用chomp,但不能在sinatra示例中调用。
N.B。如果你开始工作,请注意using flash