Bagaimana untuk melakukan pengesahan dan kebenaran pengguna dalam CakePHP?

WBOY
Lepaskan: 2023-06-05 08:34:01
asal
905 orang telah melayarinya

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');
Salin selepas log masuk

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'
        )
    )
);
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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');
Salin selepas log masuk

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'));
        }
    }
}
Salin selepas log masuk

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'));
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!