Akses Ditolak kesalahan setelah menginstal SUPEE-6285
85
Setelah menginstal patch SUPEE-6285 di toko Magento 1.7.0.2 kami, sistem menunjukkan kesalahan " Akses Ditolak " ketika mencoba mengakses semua modul khusus untuk pengguna yang memiliki izin selektif (tidak semua izin). Tangkapan layar di bawah.
Izin pengguna diatur dengan benar dalam Sumber Daya Peran dan kami telah menerapkan kembali pengaturan izin untuk memastikan ini diatur.
Masalahnya telah direproduksi di beberapa ekstensi khusus sehingga bukan hanya satu ekstensi yang tidak berfungsi.
Saya telah keluar / masuk, membersihkan cache dan mengkonfirmasi bahwa kompiler dinonaktifkan.
Adakah yang bisa menyarankan cara memecahkan masalah ini?
Jika Anda menggunakan akun admin terbatas, beberapa menu ekstensi pihak ketiga mungkin tidak berfungsi lagi untuk mereka. Alasannya adalah bahwa nilai pengembalian default Mage_Adminhtml_Controller_Action::_isAllowed()telah diubah dari truemenjadi Mage::getSingleton('admin/session')->isAllowed('admin'). Ekstensi yang tidak mengesampingkan metode ini di pengontrol admin mereka karena mereka tidak menggunakan ACL, sekarang memerlukan hak istimewa "SEMUA" .
Satu-satunya solusi adalah menambal ekstensi dan menambahkan metode ini ke semua pengontrol admin mereka:
protectedfunction _isAllowed(){returntrue;}
Atau jika mereka benar-benar memiliki sumber daya ACL yang didefinisikan dalam etc/adminhtml.xml:
Ambil nama simpul di bawah ini acl/resources/admin/children, lewati childrensimpul berikut .
Cara membuat pengidentifikasi sumber daya yang hilang
Jika hanya ada <menu>definisi tetapi tidak ada <acl>definisi, Anda juga dapat mendefinisikan sendiri (tidak harus berada dalam modul yang sama, sehingga tidak ada file pihak ke-3 yang harus dimodifikasi) ::
Salin semuanya menuke bawah acl/resources/admin/childrendan hapus <action>node.
Ini menangani sebagian besar _isAllowed()panggilan yang hilang dengan cukup baik tetapi akan menghasilkan kode yang rusak dengan file sumber yang dikaburkan atau dienkripsi, sehingga Anda masih harus memeriksa hasilnya secara manual.
Baru saja menguji solusi ini, dan memberikan izin "Dasbor" tidak ada bedanya. Apakah hak istimewa "Dasbor" sama dengan izin "Dasbor" di bawah Peran Sumber Daya atau apakah ini di tempat lain?
Chris
2
Diperbarui jawabannya, saya salah menafsirkan konfigurasi untuk admin, sebenarnya hanya mengembalikan true untuk pengguna dengan semua hak istimewa.
Fabian Schmengler
3
Tolong jangan hanya lakukan return true;jika tidak ada yang ditentukan untuk ACL di config.xmlatau adminhtml.xml. Alih-alih tambahkan izin ke file xml dan periksa dengan benar. Lihatlah situs Alan Storm atau di sini untuk info tentang cara membuat izin.
kel
Ini berfungsi dengan baik untuk modul khusus tetapi jika ada bagian untuk pengaturan konfigurasi, bagaimana kita bisa memberikan akses untuk blok ini?
mjdevloper
1
Pengontrol untuk rute yang dikonfigurasi dengan <use>admin</use>. Mereka biasanya meluas Mage_Adminhtml_Controller_Action.
Fabian Schmengler
2
Dalam kasus saya untuk modul pihak ketiga, menambahkan kode di bawah ini ke pengontrol adminhtml berfungsi:
Dalam hal ini mengembalikan Pengaturan ACL dari Magento. Saya hanya ingin tahu apakah Tim Inti Magento akan memperbaikinya dengan Patch lain atau ini harus dilakukan dalam aplikasi / kode / lokal sebagai Perbaikan global ...
Ini bukan perilaku yang dimaksudkan. Mereka membuat pengontrol admin dibatasi secara default dengan sengaja. Jadi sebenarnya vendor ekstensi dipaksa untuk memperbarui sekarang.
Fabian Schmengler
1
Jadi, ya, jika itu cocok untuk Anda, perbaiki app/code/local, tetapi tampilkan ekstensi khusus tanpa ACL jika dan hanya jika pengguna memiliki izin System > Configurationbukan yang diinginkan semua orang.
Fabian Schmengler
Solusi Anda adalah solusi dan tidak disarankan! Anda dapat mengembalikan true secara default (seperti yang ada di pengontrol admin sebelum tambalan ini). Solusi yang lebih baik: Konfigurasikan Daftar Kontrol Akses Anda dengan benar.
admin
, sebenarnya hanya mengembalikan true untuk pengguna dengan semua hak istimewa.return true;
jika tidak ada yang ditentukan untuk ACL diconfig.xml
atauadminhtml.xml
. Alih-alih tambahkan izin ke file xml dan periksa dengan benar. Lihatlah situs Alan Storm atau di sini untuk info tentang cara membuat izin.<use>admin</use>
. Mereka biasanya meluasMage_Adminhtml_Controller_Action
.Dalam kasus saya untuk modul pihak ketiga, menambahkan kode di bawah ini ke pengontrol adminhtml berfungsi:
sumber
Harus:
Dalam hal ini mengembalikan Pengaturan ACL dari Magento. Saya hanya ingin tahu apakah Tim Inti Magento akan memperbaikinya dengan Patch lain atau ini harus dilakukan dalam aplikasi / kode / lokal sebagai Perbaikan global ...
sumber
app/code/local
, tetapi tampilkan ekstensi khusus tanpa ACL jika dan hanya jika pengguna memiliki izinSystem > Configuration
bukan yang diinginkan semua orang.