2015-12-08 8 views
5

मेरे पास @login_required सजावट है जो नियंत्रक कार्रवाई को सजाती है। हालांकि मेरा ऐप बहुत बड़ा है और कई अलग-अलग नियंत्रक फ़ाइलों में कई मार्ग हैं। प्रत्येक मार्ग को सजाने के लिए एक-एक करके जाने से त्रुटि प्रवण होती है (मैं आसानी से याद कर सकता हूं) और समय लेने वाला।फ्लास्क: एक ही समय में हर मार्ग सजाने के लिए?

क्या पूरे ऐप में एक बार में सभी मार्गों को सजाने का कोई तरीका है?

मैं प्रमाणीकरण को वेब सर्वर (अपाचे) को एप्लिकेशन स्तर में ले जा रहा हूं, यही कारण है कि मुझे यह समस्या है।

+0

आप एक संशोधित रूटर लेखन की कोशिश की? – ferrix

+0

क्या सरल 'login_required' जांच हमेशा आपके लिए पर्याप्त होगी? मैं हमेशा अलग-अलग उपयोगकर्ताओं के लिए अनुमतियों के विभिन्न स्तरों की आवश्यकता समाप्त करता हूं, इसलिए मैं 'require_privilege ('विशेषाधिकार नाम') के साथ सब कुछ सजाने के लिए। मैं पूछता हूं कि अगर आप इस तरह से जाने का फैसला करते हैं, तो हर मार्ग को सजाने के अलावा वास्तव में कोई रास्ता नहीं है (उन्हें अलग-अलग अनुमतियों की आवश्यकता होती है)। – zvone

+0

@ फेरिक्स नहीं, मैंने इसके बारे में नहीं सुना है लेकिन मैं इसे देख लूंगा। zvone नहीं हमारे पास अलग-अलग अनुमतियां/भूमिकाएं नहीं हैं। प्रत्येक उपयोगकर्ता के पास एक ही अनुमति है। – steve

उत्तर

8

आप विपरीत जिस तरह से जाने के लिए और डिफ़ॉल्ट रूप से प्रवेश की आवश्यकता को before_request डेकोरेटर इस्तेमाल कर सकते हैं, और, मार्गों ऐसा नहीं लॉगइन आवश्यक टैग करने के लिए उदाहरण के लिए एक कस्टम डेकोरेटर का उपयोग करें:

_insecure_views = [] 

@my_blueprint.before_request 
def require_login(): 
    if request.endpoint in _insecure_views: 
     return 
    # check for login here 

def login_not_required(fn): 
    '''decorator to disable user authentication''' 
    endpoint = ".".join([some_blueprint.name, fn.func_name]) 
    _insecure_views.append(endpoint) 
    return fn 

@some_blueprint.route('/') 
@login_not_required 
def index(): 
    pass 

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

संपादित करें: मूल रूप से Best way to make Flask-Login's login_required the default

+0

इसके लिए धन्यवाद और अन्य पोस्ट के लिंक। 'app.view_functions'' गुप्त सॉस है जिसे मैं ढूंढ रहा था। जब तक कार्यों के संदर्भ में कोई संदर्भ है, तब तक उन कार्यों के लिए यूआरएल मानचित्र को सजाया जा सकता है। – steve

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