Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk melakukan pengesahan dan kebenaran pengguna dalam CakePHP?
Dalam pembangunan web, pengesahan dan kebenaran pengguna adalah salah satu fungsi yang sangat penting. CakePHP, sebagai rangka kerja PHP yang popular, menyediakan banyak alat yang mudah untuk menangani masalah ini. Dalam artikel ini, kami akan memperkenalkan cara melakukan pengesahan dan kebenaran pengguna dalam CakePHP.
Apakah pengesahan dan kebenaran pengguna?
Dalam aplikasi web, pengesahan pengguna merujuk kepada pengesahan identiti pengguna. Ia biasanya melibatkan pengguna memasukkan nama pengguna dan kata laluan, dan kemudian aplikasi mengesahkan bahawa bukti kelayakan ini adalah betul. Selepas pengesahan, aplikasi boleh mengenal pasti pengguna sebagai log masuk, membenarkan akses kepada sumber yang memerlukan pengesahan.
Kebenaran bermakna pengguna telah disahkan, tetapi mereka hanya boleh mengakses sumber tertentu dalam aplikasi. Sebagai contoh, pentadbir boleh mengakses beberapa sumber terhad yang pengguna biasa tidak boleh.
Pengesahan pengguna dalam CakePHP
Inti pengesahan pengguna dalam CakePHP ialah komponen Pengesahan. Komponen Auth menyediakan kaedah yang mudah digunakan untuk mengendalikan pengesahan pengguna, termasuk menetapkan objek pengesahan, mengkonfigurasi parameter pengesahan, menjana halaman log masuk dan log keluar, dan mengawal halaman yang memerlukan pengesahan.
Mari kita lihat cara melaksanakan pengesahan pengguna dalam CakePHP.
Pertama, anda perlu mengimport komponen Auth daripada rangka kerja CakePHP. Anda boleh menambah pernyataan berikut dalam pengawal anda:
public $components = array('Auth');
Kemudian anda perlu mengkonfigurasi komponen Auth untuk menggunakan objek pengesahan. Contohnya, jika anda mempunyai model bernama Pengguna untuk mengendalikan data pengguna, anda boleh mengkonfigurasi komponen Auth seperti berikut:
public $components = array( 'Auth' => array( 'authenticate' => array( 'Form' => array( 'userModel' => 'User', 'fields' => array('username' => 'email') ) ), 'loginAction' => array( 'controller' => 'users', 'action' => 'login' ), 'loginRedirect' => array( 'controller' => 'home', 'action' => 'index' ), 'logoutRedirect' => array( 'controller' => 'users', 'action' => 'login' ) ) );
Dalam contoh ini, kami telah menyatakan bahawa komponen Auth menggunakan Pengesah Borang untuk pengesahan pengguna. Kami juga menentukan model Pengguna untuk mengendalikan data pengguna dan menetapkan medan nama pengguna kepada e-mel. Kami juga menyediakan halaman ubah hala untuk log masuk dan log keluar.
Sekarang, kami perlu melaksanakan pengesah dalam model pengguna kami.
class User extends AppModel { public function beforeSave($options = array()) { if (isset($this->data[$this->alias]['password'])) { $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']); } return true; } }
Dalam contoh ini, kami menggunakan kaedah kata laluan() yang disediakan oleh CakePHP untuk mencincang kata laluan. Komponen Auth secara automatik mengesahkan dengan membandingkannya dengan cincang kata laluan masuk.
Sekarang, kami perlu mencipta halaman log masuk dalam paparan kami. Kita boleh menggunakan FormHelper terbina dalam CakePHP untuk mencipta borang asas.
echo $this->Form->create('User', array('action' => 'login')); echo $this->Form->input('email'); echo $this->Form->input('password'); echo $this->Form->end('Login');
Selepas operasi log masuk diserahkan, kami perlu menentukan logik pengesahan. Kita boleh menggunakan kod berikut dalam pengawal:
public function login() { if ($this->request->is('post')) { if ($this->Auth->login()) { return $this->redirect($this->Auth->redirectUrl()); } else { $this->Flash->error(__('Invalid email or password, try again')); } } }
Dalam operasi log masuk, jika nama pengguna dan kata laluan yang dimasukkan adalah sah, komponen Auth akan menyimpan maklumat pengguna secara automatik dalam sesi dan mengubah hala pelayar ke Halaman selepas log masuk.
Sekarang kami telah melengkapkan logik pengesahan pengguna asas, anda mungkin mahu mengehadkan halaman tertentu untuk hanya boleh diakses oleh pengguna yang disahkan.
Keizinan pengguna dalam CakePHP
Untuk mengehadkan halaman tertentu untuk hanya diakses oleh pengguna yang disahkan, kami boleh menggunakan logik kebenaran yang disediakan oleh komponen Auth.
Pertama, kami perlu menyatakan dalam pengawal kami operasi mana yang memerlukan kebenaran pengguna.
public function beforeFilter() { $this->Auth->allow(array('index', 'view')); }
Dalam contoh ini, kami membenarkan Tetamu mengakses indeks dan melihat operasi dalam pengawal.
Kami kemudiannya boleh menggunakan kaedah isAuthorized() yang disediakan oleh komponen Auth untuk menyemak sama ada pengguna mempunyai kebenaran untuk mengakses sumber tertentu.
public function isAuthorized($user) { if (in_array($this->action, array('add', 'edit', 'delete'))) { if ($user['role'] != 'admin') { return false; } } return true; }
Dalam contoh ini, kami menyemak sama ada operasi ini memerlukan hak pentadbir. Jika ya, semak sama ada peranan pengguna ialah Pentadbir. Jika tidak, kembalikan palsu, sebaliknya kembalikan benar.
Perlu diambil perhatian bahawa anda perlu menghantar parameter $user kepada kaedah isAuthorized() supaya komponen Auth mengetahui peranan dan kebenaran pengguna semasa.
Ringkasan
Dalam artikel ini, kami memperkenalkan cara melaksanakan pengesahan dan kebenaran pengguna dalam CakePHP. Dengan menggunakan komponen Auth dan beberapa konfigurasi asas, anda boleh membina aplikasi web selamat dengan cepat. Sudah tentu, pengesahan dan kebenaran pengguna hanyalah sebahagian daripada keselamatan web, dan isu lain seperti serangan suntikan, skrip merentas tapak, dll. perlu dikendalikan dengan berhati-hati. Walau bagaimanapun, belajar menggunakan pengesahan dan kebenaran pengguna dalam CakePHP akan menjadi permulaan yang baik untuk memastikan aplikasi web anda lebih selamat dan boleh dipercayai.
Atas ialah kandungan terperinci Bagaimana untuk melakukan pengesahan dan kebenaran pengguna dalam CakePHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!