Iva*_*van 5 authentication sinatra devise warden ruby-on-rails-3
我试图拆分我目前的Ruby on Rails 3 Web应用程序和它的Web服务(API).我的Web应用程序在Heroku上运行,并在我的应用程序中将API实现为命名空间路由.例如,/events
返回HTML页面并/api/v1/events
返回JSON数据.
根据一些最佳实践,我想将它们分成两个不同的应用程序.我选择了Sinatra来实现API应用程序.它现在适用于不需要身份验证的简单请求.
我的Ruby on Rails 3应用程序正在使用Devise来验证用户身份.还可以使用Facebook帐户登录.现在我想要实现的是使用Warden通过我的基于Sinatra的API对用户进行HTTP基本身份验证(包括注册).
最好的方法是什么?或者也许我可以使用与Warden不同的东西?
请记住,我对Rack不是很熟悉:)
Tho*_*esk 10
我能够让它运作起来.主要有几个方面:
以下是/config.ru代码中最相关的部分:
#
# ...
# Rest with Rails
map "/" do
run MyApp::Application
end
# Anything urls starting with /slim will go to Sinatra
map "/slim" do
# make sure :key and :secret be in-sync with initializers/secret_store.rb initializers/secret_token.rb
use Rack::Session::Cookie, :key => '<< see, initializers/secret_store.rb >>', :secret => '<< copy from initializers/secret_token.rb >>'
# Point Warden to the Sinatra App
use Warden::Manager do |manager|
manager.failure_app = AppMain
manager.default_scope = Devise.default_scope
end
# Borrowed from https://gist.github.com/217362
Warden::Manager.before_failure do |env, opts|
env['REQUEST_METHOD'] = "POST"
end
run AppMain
end
Run Code Online (Sandbox Code Playgroud)
有关完整的解决方案,请参见http://labnote.beedesk.com/sinatra-warden-rails-devise.
归档时间: |
|
查看次数: |
4977 次 |
最近记录: |