एक आधुनिक वेब एप्लिकेशन में, यह नियंत्रित करना महत्वपूर्ण है कि संसाधनों तक कौन पहुंच सकता है या संशोधित कर सकता है। उदाहरण के लिए, किसी ब्लॉग एप्लिकेशन में, आप यह सुनिश्चित करना चाहेंगे कि केवल पोस्ट का स्वामी ही इसे संपादित या हटा सकता है। लारवेल प्राधिकरण को संभालने के दो शानदार तरीके प्रदान करता है: गेट्स और पॉलिसी क्लासेस। यह मार्गदर्शिका आपको दोनों तरीकों के बारे में बताएगी, बताएगी कि अपने संसाधनों की सुरक्षा कैसे करें और अपने एप्लिकेशन की सुरक्षा कैसे सुनिश्चित करें।
गेट्स क्लोजर का उपयोग करके प्राधिकरण को संभालने का एक त्वरित और सीधा तरीका प्रदान करता है। वे सरल प्राधिकरण जांच के लिए बिल्कुल उपयुक्त हैं और AuthServiceProvider में परिभाषित हैं।
आइए यह सुनिश्चित करने के लिए एक गेट परिभाषित करें कि केवल पोस्ट स्वामी ही किसी पोस्ट को अपडेट या हटा सकता है:
गेट को परिभाषित करें: AuthServiceProvider खोलें और अपनी गेट परिभाषाएं जोड़ें:
// app/Providers/AuthServiceProvider.php use Illuminate\Support\Facades\Gate; use App\Models\Post; public function boot() { $this->registerPolicies(); Gate::define('update-post', function ($user, Post $post) { return $user->id === $post->user_id; }); Gate::define('delete-post', function ($user, Post $post) { return $user->id === $post->user_id; }); }
गेट लागू करना: प्राधिकरण तर्क को लागू करने के लिए अपने नियंत्रक तरीकों में गेट का उपयोग करें:
// app/Http/Controllers/PostController.php use Illuminate\Http\Request; use Illuminate\Support\Facades\Gate; use App\Models\Post; public function update(Request $request, Post $post) { if (Gate::denies('update-post', $post)) { abort(403, 'You do not own this post. ?'); } // Proceed with updating the post } public function destroy(Post $post) { if (Gate::denies('delete-post', $post)) { abort(403, 'You do not own this post. ?'); } // Proceed with deleting the post }
पेशेवर:
दोष:
सर्वोत्तम उपयोग का मामला: छोटे अनुप्रयोग या सरल उपयोग के मामले जहां त्वरित प्राधिकरण जांच की आवश्यकता होती है। ?
पॉलिसी कक्षाएं प्राधिकरण को संभालने के लिए अधिक संरचित और स्केलेबल दृष्टिकोण प्रदान करती हैं। वे जटिल प्राधिकरण नियमों को प्रबंधित करने और आपके कोड को व्यवस्थित रखने का एक स्पष्ट तरीका प्रदान करते हैं। संसाधन नियंत्रकों के साथ काम करते समय नीतियां विशेष रूप से उपयोगी होती हैं जिनमें मानक सीआरयूडी संचालन शामिल होते हैं: index, create, edit, update, और नष्ट करना।
पॉलिसी बनाएं: आर्टिसन का उपयोग करके एक पॉलिसी क्लास बनाएं:
php artisan make:policy PostPolicy
नीति विधियों को परिभाषित करें: जेनरेट की गई पॉलिसी क्लास खोलें और प्रत्येक कार्रवाई के लिए प्राधिकरण को संभालने के लिए तरीके जोड़ें:
// app/Policies/PostPolicy.php namespace App\Policies; use App\Models\User; use App\Models\Post; class PostPolicy { /** * Determine if the user can view the list of posts. * * @param User $user * @return bool */ public function viewAny(User $user) { // Example logic to allow viewing posts for authenticated users return true; } /** * Determine if the user can create a post. * * @param User $user * @return bool */ public function create(User $user) { return true; } /** * Determine if the user can update the post. * * @param User $user * @param Post $post * @return bool */ public function update(User $user, Post $post) { return $user->id === $post->user_id; } /** * Determine if the user can delete the post. * * @param User $user * @param Post $post * @return bool */ public function delete(User $user, Post $post) { return $user->id === $post->user_id; } }
नीति का उपयोग करना: अपने नियंत्रक कार्यों में नीति विधियों को लागू करें:
// app/Http/Controllers/PostController.php use Illuminate\Http\Request; use App\Models\Post; public function update(Request $request, Post $post) { $this->authorize('update', $post); // Proceed with updating the post } public function destroy(Post $post) { $this->authorize('delete', $post); // Proceed with deleting the post }
पेशेवर:
दोष:
सर्वोत्तम केस परिदृश्य: जटिल प्राधिकरण आवश्यकताओं वाले अनुप्रयोगों के लिए या स्वच्छ, रखरखाव योग्य कोड का लक्ष्य रखते समय आदर्श। ?
लारवेल में गेट्स और पॉलिसी क्लासेस दोनों प्राधिकरण को संभालने के लिए शक्तिशाली तरीके प्रदान करते हैं। गेट्स त्वरित, सरल जांच के लिए उत्कृष्ट हैं, जबकि पॉलिसी कक्षाएं जटिल परिदृश्यों के प्रबंधन के लिए एक संरचित दृष्टिकोण प्रदान करती हैं, विशेष रूप से संसाधन नियंत्रकों में index, create, edit, अद्यतन, और नष्ट। वह तरीका चुनें जो आपके एप्लिकेशन की आवश्यकताओं के लिए सबसे उपयुक्त हो और एक सुरक्षित, सुव्यवस्थित कोडबेस का आनंद लें! ??
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3