बोतल adds a static route स्टैटिक फ़ाइलें सेवा करने के लिए। जब आप उत्पादन में होते हैं, तो आप आमतौर पर इस मार्ग को "शॉर्ट सर्किट" करते हैं ताकि निगेंक्स आपके ऐप पर अनुरोध से पहले फाइलों परोसता है। इस "शॉर्ट सर्किट" को जोड़ने के बजाय, इसे छोड़ दें और फ्लास्क अनुरोधों को संभालने दें। Flask-Login's login_required
द्वारा लिपटे एक के साथ स्थिर मार्ग को ओवरराइट करें।
from flask_login import login_required
app.view_functions['static'] = login_required(app.send_static_file)
यह हालांकि आम तौर पर overkill है, क्योंकि आप चाहते हैं सही मायने में स्थिर फ़ाइलों कोई बात नहीं क्या उन में इतना है कि पृष्ठों के लिए सही लग रही गैर लॉग इन (अन्यथा सीएसएस भी के लिए भेजा जा नहीं होगा पेश किए जाएं, लॉगिन वाला पन्ना)। इसके बजाय, "शॉर्ट सर्किट" स्थिर फ़ोल्डर को Nginx द्वारा परोसा जाता है, और एक मार्ग परिभाषित करता है जो किसी अन्य निर्देशिका से सुरक्षित फ़ाइलों को सुरक्षित करेगा, जैसे इंस्टेंस फ़ोल्डर। flask.send_from_directory
देखें।
import os
from flask import send_from_directory
from flask_login import login_required
@app.route('/protected/<path:filename>')
@login_required
def protected(filename):
return send_from_directory(
os.path.join(app.instance_path, 'protected'),
filename
)
यह उपयोगकर्ताओं को केवल में लॉग इन करने के लिए निर्देशिका "संरक्षित" instance folder में से फाइल में काम करेगा। अन्य प्रतिबंध भी जोड़े जा सकते हैं, जैसे कुछ निश्चित उपयोगकर्ताओं को कुछ फ़ाइलों तक पहुंचने की अनुमति देना। स्थिर पथ के समान, आप के साथ एक फ़ाइल के लिए एक यूआरएल उत्पन्न कर सकते हैं:
url_for('protected', filename='data/example.csv')
सुनिश्चित नहीं हैं कि अगर यह यह करने के लिए सबसे अच्छा तरीका है, लेकिन मैं आम तौर पर बोतल के माध्यम से फ़ाइलों की सेवा और (nginx के माध्यम से दुर्गम उन फ़ाइलों को बनाने के यानी, उन्हें स्थैतिक फ़ोल्डर में न रखें)। इस तरह आप फ्लास्क-लॉगिन के साथ पहुंच नियंत्रित करते हैं। यह लिंक सहायक हो सकता है: http://flask.pocoo.org/docs/0.10/patterns/streaming/ – Gohn67
धन्यवाद गोहन 67, मैंने आपको तब तक स्थिर फ़ोल्डर से बाहर जाने का विचार नहीं किया जब तक आपने इसका उल्लेख नहीं किया। – iamlolz
आपकी गोपनीयता चिंताओं के आधार पर, आप प्रमाणीकरण से संबंधित कुकी की उपस्थिति के लिए nginx जांच कर सकते हैं और केवल मिलने पर स्थिर फाइलों की सेवा कर सकते हैं। – dirn