有没有办法让我的应用程序完全保密,只让开发人员有权访问?
当随机用户输入网址时,它应该类似于空白页面,但是当开发人员输入网址时,他们应该能够访问该应用。
答案 0 :(得分:16)
我的廉价解决方案一直在实施一个before_filter,以便在执行每个操作之前请求HTTP身份验证。
此解决方案适用于其他身份验证层 - 设计或其他。
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身份验证,之后会进行其他身份验证。
答案 1 :(得分:5)
现在您还可以使用Heroku add-on来指定允许访问应用程序的用户的电子邮件,并使用Persona(也称为BrowserID)对用户进行身份验证(不需要站点专用密码)。
答案 2 :(得分:2)
您可以使用HTTP基本身份验证作为一种简单方法:
Is there a way to set up simple http authentication for an app on heroku?
不完全是防弹,但可能就足够了。
如果未设置,您还可以尝试检查heroku_user
并拒绝访问:
我在heroku_user
上找不到太多文档,所以我不知道它是否仍然受支持。
答案 3 :(得分:2)
一个非常简单的解决方案是添加一个可以存储在用户计算机上的cookie中的密钥。这不是一个完美的解决方案,因为有人可以获得密钥,但它可以为您提供基本保护,防止您在网站上遇到绊脚石。您可以使用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中的访问密钥,如果它存在于任何一个位置,则将它们放入。这样,一旦他们使用密钥访问网站,他们就可以直接访问网址。
答案 4 :(得分:0)
查看authlogic gem,特别是单一访问令牌功能。
您可以将404返回给未通过相应单一访问令牌作为参数的任何人。
答案 5 :(得分:0)
我构建了rack_staging gem来为自己处理这个用例,它也可能对你有用。
答案 6 :(得分:0)
我的(也很便宜)解决方案(使用基于类的视图的Django应用程序)是在我所有基于类的视图中使用SuperUserRequiredMixin
,如下所示:
class BlogPostDetailView(SuperuserRequiredMixin, DetailView):
template_name = "blogpost-detail.html"
model = BlogPost
添加/删除此mixin是我的方法。