"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > लारवेल में प्राधिकरण - एक शुरुआती मार्गदर्शिका

लारवेल में प्राधिकरण - एक शुरुआती मार्गदर्शिका

2024-11-07 को प्रकाशित
ब्राउज़ करें:470

Authorization In Laravel - A Beginner

लारवेल में प्राधिकरण में महारत हासिल करना: गेट्स बनाम नीति वर्ग ??

एक आधुनिक वेब एप्लिकेशन में, यह नियंत्रित करना महत्वपूर्ण है कि संसाधनों तक कौन पहुंच सकता है या संशोधित कर सकता है। उदाहरण के लिए, किसी ब्लॉग एप्लिकेशन में, आप यह सुनिश्चित करना चाहेंगे कि केवल पोस्ट का स्वामी ही इसे संपादित या हटा सकता है। लारवेल प्राधिकरण को संभालने के दो शानदार तरीके प्रदान करता है: गेट्स और पॉलिसी क्लासेस। यह मार्गदर्शिका आपको दोनों तरीकों के बारे में बताएगी, बताएगी कि अपने संसाधनों की सुरक्षा कैसे करें और अपने एप्लिकेशन की सुरक्षा कैसे सुनिश्चित करें।

लारवेल में गेट्स?

गेट्स क्लोजर का उपयोग करके प्राधिकरण को संभालने का एक त्वरित और सीधा तरीका प्रदान करता है। वे सरल प्राधिकरण जांच के लिए बिल्कुल उपयुक्त हैं और AuthServiceProvider में परिभाषित हैं।

एक गेट स्थापित करना

आइए यह सुनिश्चित करने के लिए एक गेट परिभाषित करें कि केवल पोस्ट स्वामी ही किसी पोस्ट को अपडेट या हटा सकता है:

  1. गेट को परिभाषित करें: 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;
        });
    }
    
  2. गेट लागू करना: प्राधिकरण तर्क को लागू करने के लिए अपने नियंत्रक तरीकों में गेट का उपयोग करें:

    // 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, और नष्ट करना

नीति बनाना और उसका उपयोग करना

  1. पॉलिसी बनाएं: आर्टिसन का उपयोग करके एक पॉलिसी क्लास बनाएं:

    php artisan make:policy PostPolicy
    
  2. नीति विधियों को परिभाषित करें: जेनरेट की गई पॉलिसी क्लास खोलें और प्रत्येक कार्रवाई के लिए प्राधिकरण को संभालने के लिए तरीके जोड़ें:

    // 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;
        }
    }
    
  3. नीति का उपयोग करना: अपने नियंत्रक कार्यों में नीति विधियों को लागू करें:

    // 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, अद्यतन, और नष्ट। वह तरीका चुनें जो आपके एप्लिकेशन की आवश्यकताओं के लिए सबसे उपयुक्त हो और एक सुरक्षित, सुव्यवस्थित कोडबेस का आनंद लें! ??

विज्ञप्ति वक्तव्य इस लेख को पुन: प्रस्तुत किया गया है: https://dev.to/mohammed_kareem/authorization-in-taravel-a-beginners-guide-32kf?1 यदि कोई उल्लंघन है, तो इसे हटाने के लिए [email protected] पर संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3