Как сохранить конфиденциальность моего приложения Heroku? - PullRequest
22 голосов
/ 28 января 2011

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

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

Ответы [ 7 ]

16 голосов
/ 28 января 2011

Мое дешевое решение внедрило 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

Всякий раз, когда другие узлы заходят на yourdomain.heroku.com, их просят об HTTP-аутентификации, а затем о другой аутентификации, если она есть.

5 голосов
/ 16 апреля 2013

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

2 голосов
/ 30 января 2011

Действительно простым решением было бы просто добавить ключ, который можно сохранить в файле 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.

2 голосов
/ 28 января 2011

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

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

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

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

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

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

0 голосов
/ 24 июля 2016

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

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

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

0 голосов
/ 04 июля 2013

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

0 голосов
/ 29 января 2011

Проверьте аутентичную жемчужину, особенно функцию Single Access Token.

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

...