2011-01-28 19 views
21

क्या कोई तरीका है कि मैं अपना आवेदन पूरी तरह से निजी रख सकता हूं, और केवल डेवलपर्स को पहुंचने दें?मैं अपना हेरोोक एप्लिकेशन निजी कैसे रख सकता हूं?

जब कोई यादृच्छिक उपयोगकर्ता यूआरएल में प्रवेश करता है, तो यह एक खाली पृष्ठ की तरह होना चाहिए, लेकिन जब डेवलपर्स यूआरएल दर्ज करते हैं, तो वे ऐप तक पहुंचने में सक्षम होना चाहिए।

+1

यदि कोई Google से यहां नोड.जेएस की तलाश में आया, तो यहां एक [लिंक] (http://blog.modulus.io/nodejs-and-express-basic- प्रमाणीकरण) – funroll

उत्तर

16

मेरा सस्ता समाधान प्रत्येक क्रिया निष्पादित होने से पहले 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 प्रमाणीकरण के लिए, बाद में अन्य प्रमाणीकरण के लिए जगह में है, तो कहा जाता है।

+0

उपयोगकर्ता नाम और पासवर्ड स्टोर करना बेहतर है हेरोोकू कॉन्फ़िगरेशन चर के रूप में (http://blog.heroku.com/archives/2009/4/7/config-vars) और हैश (http://zacharyfox.com/blog/ruby-on-rails/password- hashing) , हालांकि प्रमाणीकरण केवल तब होना चाहिए जब Rails.env == 'उत्पादन'। – avalez

+0

क्या मैं इसे एंगुलरजेएस ऐप (कोणीय-पूर्ण-जनरेटर जनरेटर) में उपयोग कर सकता हूं? यदि ऐसा है तो मैं वास्तव में यह कोड कहां जोड़ूं ताकि उसे हेरोोकू में धकेल दिया जा सके? – LifeOnLars

+0

रेल 4 में उपर्युक्त अंतर्निहित है: http://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Basic.html –

1

आप HTTP एक आसान तरीका के रूप में बुनियादी प्रमाणीकरण का उपयोग कर सकते हैं:

Is there a way to set up simple http authentication for an app on heroku?

नहीं वास्तव में बुलेट प्रूफ लेकिन शायद पर्याप्त।

तुम भी heroku_user जाँच और पहुँच से इनकार करता है, तो यह सेट नहीं है की कोशिश कर सकते:

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

मैं heroku_user पर ज्यादा प्रलेखन तो मैं अगर पता नहीं है नहीं मिल सकता है यह अभी भी समर्थित है।

0

ऑथलॉगिक मणि, विशेष रूप से सिंगल एक्सेस टोकन सुविधा देखें।

आप किसी भी व्यक्ति को 404 वापस कर सकते हैं जो उचित एकल पहुंच टोकन को तर्क के रूप में पास नहीं करता है।

2

एक वास्तव में सरल समाधान केवल एक कुंजी जोड़ना होगा जिसे उपयोगकर्ता मशीन पर कुकी में संग्रहीत किया जा सके। यह एक सही समाधान नहीं है क्योंकि कोई व्यक्ति कुंजी प्राप्त कर सकता है लेकिन यह आपको आपकी साइट पर किसी के ठोकर से बुनियादी सुरक्षा प्रदान करता है। आप 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 

इस कोड को या तो यूआरएल या उन मशीन पर एक कुकी में पहुँच कुंजी के लिए जाँच करें और अगर यह या तो जगह में मौजूद उन में करने देगा। इस तरह उन्होंने साइट को कुंजी के साथ एक्सेस करने के बाद वे सीधे यूआरएल तक पहुंच सकते हैं।

+0

धन्यवाद! यह सिर्फ अच्छा और सरल था, मैंने इसे एक sailsjs (नोड) ऐप पर लागू किया और यह खूबसूरती से काम किया। –

4

अब आप Heroku add-on का उपयोग भी कर सकते हैं जो कि आप किसी एप्लिकेशन तक पहुंचने के लिए उपयोगकर्ताओं की ईमेल निर्दिष्ट करते हैं और जो उपयोगकर्ताओं को प्रमाणीकृत करने के लिए पर्सन (उर्फ ब्राउज़रआईडी) का उपयोग करते हैं (कोई साइट विशिष्ट पासवर्ड आवश्यक नहीं है)।

+0

केवल यूएस क्षेत्र में उपलब्ध है ... – Imanol

0

मैंने rack_staging मणि का निर्माण स्वयं के लिए इस केस केस को संभालने के लिए बनाया है, यह आपके लिए भी उपयोग किया जा सकता है।

0

मेरे (भी सस्ते) समाधान (वर्ग आधारित विचारों का उपयोग करता है Django एप्लिकेशन) इस तरह सभी मेरी कक्षा आधारित विचारों में SuperUserRequiredMixin उपयोग करने के लिए है:

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

जोड़ा जा रहा है/इस mixin हटाने के बारे में जाने के लिए मेरा तरीका है इस।

संबंधित मुद्दे

 संबंधित मुद्दे