Подтвердить что ты не робот

Как я могу сохранить приложение Heroku в частном порядке?

Есть ли способ, чтобы я мог полностью закрывать приложение и разрешать только разработчикам?

Когда случайный пользователь вводит URL-адрес, он должен быть чем-то вроде пустой страницы, но когда разработчики вводят URL-адрес, они должны иметь доступ к приложению.

4b9b3361

Ответ 1

В моем недорогом решении реализована функция before_filter, чтобы запросить аутентификацию HTTP перед выполнением каждого действия.

Это решение хорошо работает с другими уровнями аутентификации - Devise или другими.

USERS = { "user" => "secret" }

before_filter :authenticate

def authenticate
  authenticate_or_request_with_http_digest("Application") do |name|
    USERS[name]
  end
end

Всякий раз, когда другие peers приземляются на yourdomain.heroku.com, их спрашивают об аутентификации HTTP, позже для другой проверки подлинности, если на месте.

Ответ 2

Теперь вы также можете использовать дополнение Heroku, позволяющее указывать электронные письма пользователей, которым разрешен доступ к приложению, и который использует Persona ( aka BrowserID) для аутентификации пользователей (не требуется никакого конкретного пароля).

Ответ 3

На самом деле простым решением было бы просто добавить ключ, который может быть сохранен в файле cookie на компьютере пользователя. Это не идеальное решение, так как кто-то может получить ключ, но он дает вам основную защиту от кого-то, спотыкающегося о вашем сайте. Вы можете использовать URL-адрес, например http://www.yourdomain.com?access_key=random_string, а затем добавить в свой контроллер приложений следующее.

class ApplicationController < ActionController::Base
  before_filter :check_redirect_key

  def check_redirect_key
    if request[:access_key] != 'random_string' && cookies[:access_key] != 'random_string'
      redirect_to "/404.html" 
    elsif request[:access_key] == 'random_string'
      cookies.permanent[:access_key] = 'random_string'
    end
  end

end

Этот код проверяет ключ доступа в URL-адресе или файле cookie на компьютере пользователя и позволяет им, если он существует в любом месте. Таким образом, как только они обратились к сайту с помощью ключа, они могут напрямую получить доступ к URL-адресу.

Ответ 4

Вы можете использовать базовую аутентификацию HTTP как простой способ:

Есть ли способ настроить простую HTTP-аутентификацию для приложения на heroku?

Не совсем пуленепробиваемый, но, возможно, достаточно.

Вы также можете попробовать проверить heroku_user и отказаться от доступа, если он не установлен:

http://blog.heroku.com/archives/2008/1/14/heroku_user/

Я не могу найти много документации по heroku_user, поэтому я не знаю, поддерживается ли она.

Ответ 5

Отметьте authlogic gem, особенно функцию Single Access Token.

Вы можете вернуть 404 всем, кто не передает соответствующий токен доступа в качестве аргумента.

Ответ 6

Я построил камень rack_staging, чтобы обработать этот прецедент для себя, он может быть вам и полезен.

Ответ 7

My (также дешевое) решение (приложение Django, использующее представления, основанные на классе) заключается в использовании SuperUserRequiredMixin во всех моих представлениях на основе классов, таких как:

class BlogPostDetailView(SuperuserRequiredMixin, DetailView):
    template_name = "blogpost-detail.html"
    model = BlogPost

Добавление/удаление этого mixin - это мой способ сделать это.