Кто-нибудь установил Devise драгоценный камень с помощью Sinatra?
Разработчик основан на Warden, поэтому он должен работать на Sinatra, я не мог найти никакой информации о том, как его реализовать.
Кто-нибудь установил Devise драгоценный камень с помощью Sinatra?
Разработчик основан на Warden, поэтому он должен работать на Sinatra, я не мог найти никакой информации о том, как его реализовать.
На самом деле Devise - это просто Rails-ориентированная оболочка с приятными помощниками для warden, которая является основой для проверки подлинности Rack. Поэтому, если вы используете Sinatra совместно с Rails, вы можете использовать Devise в своем приложении Rails и использовать warden непосредственно в вашем приложении Sinatra, и они будут видеть те же данные сеанса пользователя.
Нет, вы не можете использовать Devise прямо в вашем приложении Sinatra, но если вы создаете модульное приложение с некоторыми частями в Rails и другими частями в Sinatra, вы можете использовать Devise/Warden среди компонентов.
Devise предназначен только для Rails. Вы не можете использовать его с Sinatra.
Вы можете проверить:
https://github.com/maxjustus/sinatra-authentication
http://www.gittr.com/index.php/archive/sinatra-basic-authentication-selectively-applied/
Существует также https://github.com/jsmestad/sinatra_warden.
Я смог заставить его работать. Было несколько основных аспектов:
Вот наиболее важная часть кода из /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
См. http://labnote.beedesk.com/sinatra-warden-rails-devise для полного решения.