SUPEE-6285 स्थापित करने के बाद अस्वीकृत त्रुटियों तक पहुँचें


85

हमारे Magento 1.7.0.2 स्टोर पर SUPEE-6285 पैच स्थापित करने के बाद, सिस्टम उन चुनिंदा अनुमतियों (सभी अनुमतियाँ नहीं) के लिए सभी कस्टम मॉड्यूल तक पहुँचने का प्रयास करते समय " एक्सेस अस्वीकृत " त्रुटि दिखा रहा है। नीचे स्क्रीनशॉट।

यहाँ छवि विवरण दर्ज करें

उपयोगकर्ता संसाधन रोल रिसोर्स में ठीक से सेट किए गए हैं और हमने ये सुनिश्चित करने के लिए अनुमति सेटिंग्स को फिर से लागू किया है।

समस्या को कई कस्टम एक्सटेंशन में पुन: प्रस्तुत किया गया है, इसलिए यह केवल एक एक्सटेंशन नहीं है जो काम नहीं कर रहा है।

मैंने लॉग / इन किया है, कैश साफ़ किया है और पुष्टि की है कि संकलक अक्षम है।

क्या कोई सुझाव दे सकता है कि इसका निवारण कैसे किया जाए?

जवाबों:


129

जैसा यहां लिखा गया है :

यदि आप प्रतिबंधित व्यवस्थापक खातों का उपयोग करते हैं, तो तृतीय पक्ष एक्सटेंशन के कुछ मेनू उनके लिए अब और काम नहीं कर सकते हैं। कारण यह है कि डिफ़ॉल्ट रिटर्न मान Mage_Adminhtml_Controller_Action::_isAllowed()को से बदल दिया गया trueहै Mage::getSingleton('admin/session')->isAllowed('admin')। एक्सटेंशन जो इस पद्धति को उनके व्यवस्थापक नियंत्रकों में ओवरराइड नहीं करते हैं क्योंकि वे एसीएल का उपयोग नहीं करते हैं, अब "सभी" विशेषाधिकार की आवश्यकता है।

एकमात्र उपाय एक्सटेंशन पैच करना है और इस पद्धति को उनके सभी व्यवस्थापक नियंत्रकों में जोड़ना है:

protected function _isAllowed()
{
    return true;
}

या अगर वे वास्तव में एक एसीएल संसाधन में परिभाषित हैं etc/adminhtml.xml:

protected function _isAllowed()
{
    return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}

संसाधन पहचानकर्ता का निर्धारण कैसे करें

यह इस adminhtml.xmlतरह लग सकता है:

Mage_Setup उदाहरण (acl)

नोड नोड के नीचे acl/resources/admin/childrenलंघन के नीचे नोड नाम लें children

गुम संसाधन पहचानकर्ता कैसे बनाएं

यदि केवल एक <menu>परिभाषा है, लेकिन कोई <acl>परिभाषा नहीं है , तो आप अपने स्वयं को भी परिभाषित कर सकते हैं (यह एक ही मॉड्यूल के भीतर नहीं होना चाहिए, इसलिए किसी भी 3 पार्टी फ़ाइलों को संशोधित नहीं करना होगा) ::

Mage_Setup उदाहरण (मेनू)

नीचे सब कुछ कॉपी menuकरने के लिए acl/resources/admin/childrenऔर हटाने <action>नोड्स।


स्वचालित फिक्स

SupportDesk.nu द्वारा https://gist.github.com/raybogman/eec47237b8ef0d4dd0fd पर एक अच्छा कमांड लाइन टूल है

यह अधिकांश गायब _isAllowed()कॉलों को अच्छी तरह से संभालता है लेकिन परिणाम में टूटे हुए कोड के साथ obfuscated या एन्क्रिप्टेड स्रोत फ़ाइलें होंगी, इसलिए आपको अभी भी मैन्युअल रूप से परिणामों की जांच करनी चाहिए।


बस इस समाधान का परीक्षण किया है, और "डैशबोर्ड" की अनुमति देने से कोई फर्क नहीं पड़ता है। क्या "डैशबोर्ड विशेषाधिकार" भूमिका संसाधनों के तहत "डैशबोर्ड" की अनुमति के समान है या यह कहीं और है?
क्रिस

2
उत्तर अपडेट किया, मैंने इसके लिए कॉन्फ़िगरेशन की गलत व्याख्या की admin, यह वास्तव में केवल सभी प्राइवेटिलिज वाले उपयोगकर्ताओं के लिए सही है।
फैबियन शेंगलर

3
कृपया ऐसा न करें कि return true;आपके config.xmlया एसीएल के लिए कुछ भी परिभाषित नहीं है adminhtml.xml। इसके बजाय xml फ़ाइल में अनुमतियाँ जोड़ें और इसे ठीक से जांचें। एक नजर डालें एलन तूफान की साइट या यहाँ अनुमतियों बनाने पर जानकारी के लिए।
केएल

यह कस्टम मॉड्यूल के लिए ठीक काम कर रहा है, लेकिन अगर कॉन्फ़िगरेशन सेटिंग के लिए खंड है, तो हम इस ब्लॉक के लिए कैसे पहुंच दे सकते हैं?
mjdevloper

1
उन मार्गों के लिए नियंत्रक जो के साथ कॉन्फ़िगर किए गए हैं <use>admin</use>। वे आमतौर पर बढ़ाते हैं Mage_Adminhtml_Controller_Action
फेबियन शेंगलर

2

तीसरे पक्ष के मॉड्यूल के लिए मेरे मामले में, नीचे दिए गए कोड को व्यवस्थापक html में जोड़कर काम किया:

protected function _isAllowed()

{
     return true;
}

-5

यह होना चाहिए:

protected function _isAllowed()
{
    return Mage::getSingleton('admin/session')->isAllowed('system/config');
}

उस स्थिति में यह Magento से एसीएल सेटिंग्स लौटाता है। मैं बस सोच रहा था कि क्या मैगेंटो कोर टीम इसे किसी अन्य पैच के साथ ठीक कर देगी या इसे वैश्विक फिक्स के रूप में ऐप / कोड / स्थानीय में किया जाना चाहिए ...


3
यह अभीष्ट व्यवहार नहीं है। उन्होंने उद्देश्य पर डिफ़ॉल्ट रूप से व्यवस्थापक नियंत्रकों को प्रतिबंधक बना दिया। तो वास्तव में विस्तार विक्रेताओं को अब अपडेट करने के लिए मजबूर किया जाता है।
बजे फैबियन शेंगलर

1
तो, हाँ, यदि यह आपके लिए काम करता है, तो इसे ठीक करें app/code/local, लेकिन ACL के बिना कस्टम एक्सटेंशन दिखा रहा है अगर और केवल अगर उपयोगकर्ता के लिए अनुमतियाँ हैं, System > Configurationतो कोई भी ऐसा व्यक्ति नहीं है जो चाहेगा।
फैबियन शेंगलर

आपका समाधान एक समाधान है और अनुशंसित नहीं है! आप डिफ़ॉल्ट रूप से सही लौट सकते हैं (जैसा कि इस पैच से पहले व्यवस्थापक नियंत्रक में था)। बेहतर समाधान: अपनी पहुंच नियंत्रण सूचियों को सही ढंग से कॉन्फ़िगर करें।
मथायस क्लेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.