5.2 Authentikasi
The original text for this section has changed since it was translated. Please help resolve this difference. You can:
Sistem authentikasi pengguna adalah bahagian yang biasa pada kebanayakan aplikasi web. Dalam CakePHP ada beberapa sistem untuk mengauthentikasi pengguna, Setiap darinya memberikan pilihan yang berbeza. Pada terasnya komponen authenticatikasi akan menyemak sama ada pengguna mempunyai akaun pada sesuatu laman. Jika ada, komponen akan memberi akses pada pengguna untuk keseluruhan laman.
Komponen ini boleh digabungkan dengan komponen ACL (access control lists) untuk membuat tahap akses yang lebih kompleks dalam sesuatu laman. Komponen ACL, misalnya, boleh membolehkan anda untuk membenarkan seorang pengguna mengakses bahagian umum sesebuah laman, sementara membenarkan seorang pengguna mengakses bahagian laman yang dilindungi (contohnya: bahagian pentadbiran) pada sesebuah laman.
AuthComponent CakePHP boleh digunakan untuk buat sistem dengan mudah dan cepat. Mari lihat bagaimana anda boleh membuat sebuah sistem authentikasi yang ringkas.
Seperti komponen-komponen yang lain, anda gunakan ia dengan menambah 'Auth' di senarai komponen pada controller anda:
class FooController extends AppController {
var $components = array('Auth');
class FooController extends AppController {var $components = array('Auth');
Atau tambahkan ia pada AppController anda jadi semua controller anda akan menggunakannya:
class AppController extends Controller {
var $components = array('Auth');
class AppController extends Controller {var $components = array('Auth');
Sekarang, ada beberapa isu penamaan yang boleh difikirkan apabila menggunakan AuthComponent. Secara default, AuthComponent mengandaikan anda ada table yang dinamakan 'users' dengan ruangan yang dinamakan 'username' dan 'password' untuk digunakan. Dalam beberapa situasi, databases tidak membenarkan anda menggunakan 'password' sebagai nama kolum, selepas ini, anda akan lihat bagaimana mengubah ruangan nama default untuk bekerja dengan environtment anda.
Mari buat users table menggunakan arahan SQL berikut:
CREATE TABLE users (
id integer auto_increment,
username char(50),
password char(50),
PRIMARY KEY (id)
);
CREATE TABLE users (id integer auto_increment,username char(50),password char(50),PRIMARY KEY (id));
Perlu diingat bila membuat table untuk simpan semua data authentikasi pengguna ialah AuthComponent menganggap nilai password yang disimpan pada database di hashed kan berbanding disimpan dengan plaintext. Pastikan ruangan yang anda akan gunakan untuk simpan passwords cukup panjang untuk simpan hash (40 characters untuk SHA1, misalannya).
Untuk setup yang asas, anda cuma perlu buat dua actions pada controller anda:
class UsersController extends AppController {
var $name = 'Users';
var $components = array('Auth'); // Not necessary if declared in your app controller
/**
* The AuthComponent provides the needed functionality
* for login, so you can leave this function blank.
*/
function login() {
}
function logout() {
$this->redirect($this->Auth->logout());
}
}
class UsersController extends AppController {var $name = 'Users';var $components = array('Auth'); // Not necessary if declared in your app controller/*** The AuthComponent provides the needed functionality* for login, so you can leave this function blank.*/function login() {}function logout() {$this->redirect($this->Auth->logout());}}
Walaupun anda boleh biarkan fungsi login() kosong, anda perlu buat template login (disimpan di app/views/users/login.ctp). Walau bagaimana pun cuma template UsersController view yang anda perlu buat. Contoh di bawah mengandaikan anda sudah guna Form helper:
<?php
if ($session->check('Message.auth')) $session->flash('auth');
echo $form->create('User', array('action' => 'login'));
echo $form->input('username');
echo $form->input('password');
echo $form->end('Login');
?>
<?phpif ($session->check('Message.auth')) $session->flash('auth');echo $form->create('User', array('action' => 'login'));echo $form->input('username');echo $form->input('password');echo $form->end('Login');?>
View ini membuat sebuah borang login ringkas di mana anda letakkan username dan password. Sebaik sahaja anda submit borang ini, AuthComponent akan menyelesaikan yang lain untuk anda. Mesej session flash akan memaparkan segala notis yang dijana oleh AuthComponent.
Percaya atau tidak, kita sudah selesaikannya! Begitulah cuma untuk buat sebuah sistem authentikasi ringkas yang berasaskan database menggunakan Auth component. Bagaimana pun banyak lagi yang boleh kita buat. Mari lihat pada penggunaan komponen yang lebih advanced.


























