केस: मैं नीतियों का उपयोग कर रीढ़ की हड्डी के रूप में लार्वेल के प्राधिकरण का उपयोग करके एक मंच बना रहा हूं। मेरे द्वारा चलाए जाने वाले चेक के उदाहरण @can('view', $forum)
, और @can('reply', $topic)
, Gate::allows('create_topic', $forum)
आदि जैसी चीजें हैं। ये चेक मूल रूप से जांचते हैं कि उपयोगकर्ताओं की भूमिका में विशिष्ट फ़ोरम, विषय या पोस्ट के लिए अनुमति है या नहीं। इस तरह से मैं अपने आवेदन में प्रत्येक फोरम के लिए भूमिकाएं बहुत विशिष्ट अनुमति दे सकता हूं।अतिथि उपयोगकर्ताओं के लिए प्राधिकरण और नीतियां
if (! $user = $this->resolveUser()) {
return false;
}
यह एक मुद्दा प्रस्तुत करता है जब मंचों के साथ काम:
मुद्दा यह है कि इन चेकों के सभी गेट वर्ग के माध्यम से जाना, विशेष रूप से एक विधि कहा जाता raw()
इसकी पहली पंक्ति में यह करता है जो है। मेरे आवेदन के मेहमानों को मेरे मंच को देखने की भी अनुमति दी जानी चाहिए, हालांकि आप ऊपर दिए गए कोड से देख सकते हैं, यदि उपयोगकर्ता लॉग इन नहीं है तो लैरावेल गेट क्लास स्वचालित रूप से झूठी रिटर्न देता है।
मुझे अपनी नीतियों को ट्रिगर करने में सक्षम होना चाहिए भले ही कोई उपयोगकर्ता न हो। मेरे [email protected]
विधि में कहें, मैं if(User::guest() && $forum->hasGuestViewAccess()) { return true }
लेकिन जैसा कि आप देख सकते हैं, यह विधि कभी भी ट्रिगर नहीं होगी।
क्या मेरे पास अभी भी अतिथि उपयोगकर्ताओं के साथ लैरवेल की प्राधिकरण सुविधा का उपयोग करने का कोई तरीका है?
आप 'गेट :: फॉर यूज़र ($ guestUser)' का उपयोग कर रिज़ॉल्यूवर समस्या के आसपास भी हो सकते हैं, लेकिन यह आपके मामले में उपयोगी नहीं लगता है क्योंकि आपको अभी भी मेहमानों और उपयोगकर्ताओं के लिए अलग-अलग कोड की आवश्यकता होगी। – tdhsmith