2015-03-31 9 views
5

मेरे आवेदन में मैंने एक कस्टम प्रमाणीकरण पैकेज (Sentinel by Cartalyst) के संयोजन में एक OAuth2-Server (oauth2-server-laravel) लागू किया।अस्थायी रूप से अक्षम/बाईपास मिडलवेयर

मेरी routes.php में:

Route::group(['before' => 'oauth'], function() 
{ 
    // ... some routes here 
} 

तो अनुरोध एक प्राधिकरण शीर्ष लेख या आवेदन प्रदान करनी चाहिए एक OAuthException साथ इस्तीफा।

अब मैं अपने नियंत्रकों को एकजुट करना चाहता हूं। इसलिए मुझे अपने डेटाबेस को ओएथ सत्र के साथ बीज करना होगा और प्रत्येक टेस्ट के लिए टोकन एक्सेस करना होगा। फिर call()-TestCase के विधि को ओवरराइट करें और बीयरर टोकन के साथ HTTP-प्राधिकरण शीर्षलेख सेट करें।

क्या मिडलवेयर को अक्षम या बाईपास करने का कोई तरीका है (मेरे मामले में केवल यूनिट परीक्षण के लिए)?

लार्वेल 4 में उन्हें रूट फ़िल्टर कहा जाता था और वे परीक्षण वातावरण में वैसे भी अक्षम थे। आप उन्हें Route::enableFilters() के साथ मैन्युअल रूप से सक्षम/अक्षम भी कर सकते हैं।

+0

मैं इसका उत्तर भी जानना चाहूंगा, मेरी पढ़ाई अब तक है कि लैरावेल 5 में मिडलवेयर को अक्षम करना संभव नहीं है जिस तरह से मार्ग फ़िल्टर को लैरवेल 4 में परीक्षण मोड में अक्षम किया गया था। हालांकि मैं उत्सुक हूं गलत साबित होना – delatbabel

उत्तर

5

Laravel के रिलीज के साथ जाहिरा तौर पर 5.1 कल एक disableMiddleware() विधि TestCase वर्ग को जोड़ा गया है, जो अब करता है मैं वास्तव में क्या करना चाहता था।

समस्या हल हो गई। :)

+1

तो बस अपने टेस्ट केस क्लास – surfer190

+0

में 'बिना मिडलवेयर का उपयोग करें' डालें, इस पर एक सुधार फ्रेमवर्क में विलय कर दिया गया है जो कि मध्यवर्ती के विशिष्ट सेट को अक्षम करने की अनुमति देता है। https://github.com/laravel/framework/pull/18673 देखें – meysam

2

एकमात्र उत्तर जो मैं साथ आ सकता था वह वास्तविक मध्यवर्ती में बाईपास डालना था। उदाहरण के लिए:

public function handle($request, Closure $next) 
{ 
    // Don't validate authentication when testing. 
    if (env('APP_ENV') === 'testing') { 
     return $next($request); 
    } 
    // ... continue on to process the request 
} 

मुझे ऐप पर्यावरण पर मिडलवेयर निर्भर करने का विचार पसंद नहीं है लेकिन मुझे कोई अन्य विकल्प नहीं दिखाई दे रहा था।

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