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.

masukkan deskripsi gambar di sini

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?

Jawaban:


129

Seperti yang tertulis di sini :

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:

protected function _isAllowed()
{
    return true;
}

Atau jika mereka benar-benar memiliki sumber daya ACL yang didefinisikan dalam etc/adminhtml.xml:

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

Cara menentukan pengenal sumber daya

Seperti inilah adminhtml.xmlbentuknya:

Contoh Mage_Setup (acl)

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) ::

Contoh Mage_Setup (menu)

Salin semuanya menuke bawah acl/resources/admin/childrendan hapus <action>node.


Memperbaiki otomatis

Ada alat baris perintah yang baik oleh SupportDesk.nu di https://gist.github.com/raybogman/eec47237b8ef0d4dd0fd

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:

protected function _isAllowed()

{
     return true;
}

-5

Harus:

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

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 ...


3
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.
Matthias Kleine
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.