Как создать безопасное соединение в полях формы с помощью Sinatra - PullRequest
0 голосов
/ 12 марта 2020

Я использовал интерфейсный и внутренний сервер API для реализации веб-приложения Ruby / Sinatra. Форма будет отправлена ​​по маршруту '/ login' во внешнем app.rb:

post '/login' do
  uri = URI.join("http://#{settings.api}:#{settings.api_port}",
                 "/user/", "validate")
  response = Net::HTTP.post_form(
    uri, 'email' => params[:email], 
    'password' => params[:password])
  h = response.code == "200" || response.code == "401" ? 
      JSON.parse(response.body) : {}
  if h["status"] == "success"
    # Save the user id inside the browser cookie. 
    # This is how we keep the user 
    # logged in when they navigate around our website.
    session[:user_id] = h["user_id"]
    puts session[:user_id]
    redirect '/home'
  else
  # If user's login doesn't work, send them back to the login form.
    flash[:notice] = "Login failed due to #{h["status"]}"
    redirect '/login'
  end
end

Запрос на отправку и его параметры отправляются через HTTP на внутренний сервер. А внутренний сервер API ответит JSON, в котором есть поле состояния, чтобы указать, прошла ли аутентификация пользователя успешно.

В браузере появляется следующее сообщение: «Соединение не защищено». введите описание изображения здесь . Есть ли дополнительные настройки безопасности, которые я должен включить в интерфейсный файл app.rb?

1 Ответ

0 голосов
/ 12 марта 2020

Вы можете попробовать добавить следующие конфигурации в ваш файл app.rb:

configure :development, :test do
  set :force_ssl, true
end

configure :production do
  set :force_ssl, true
end

См. « Форсирование SSL в приложении Sinatra » о форсировании SSL в приложениях Sinatra и о том, как может быть полезным в вашей ситуации.

...