2012-12-15 42 views
0

我有一个rails web应用程序,我需要为移动客户端创建API。我为此选择了一个Sinatra Web框架。但是,在每次请求所有数据会话丢失后,我的Sinatra应用程序出现问题。 我的API看起来像这样(LIB/API/core.rb):Sinatra with Rails重置会话每请求

module Api 
    class Core < Sinatra::Base 
    set :session_secret, 'secret' 
    enable :sessions 

    get '/foo' do 
     content_type :json 
     session['foo'] = 'some value' 
    end 

    get '/bar' do 
     content_type :json 
     session['foo']#everytime is nil 
    end 

    end 
end 

在我route.rb我写了这个:

constraints :subdomain => 'api' do 
    mount Api::Core => '/' 
end 

我使用的Rails 3.2.8,1.3.3西纳特拉

而我的问题是如何在请求之间存储数据(它需要我进行身份验证)?

+0

您正在使用Rails和Sinatra? – Phrogz

+0

是的,Rails为我的主要网络应用程序,Sinatra为API –

回答

0

您的API应该是无状态的。身份验证通常使用与每个请求一起发送的令牌来完成。有关更多信息,请参阅RailsCast #352 Securing an API

+0

我知道令牌认证,我将使用它。但是我需要为每个标记存储用户标识,因为我将在我的查询中使用它。 –

+0

我不确定那是什么问题。你有一个无状态的API,每次你得到一个请求时,你都会根据提供的标记(User.find_by_token(params [:token])找到用户并做一些事情。 –