Yang Pertama dan Utama
Yayasan Pendididkan Widya Bakti berdiri dengan Akta Notaris Nomor 43 tanggal 30 Juni 1979, sebagai penyelenggara pendidikan tinggi dibidang komputer yang pertama di Jateng dan DIY dengan nama Akademi Aplikasi Komputer (AKAKOM). Tahun 1985 AKAKOM menjadi AMIK AKAKOM dan akhirnya sejak tahun 1992 menjadi STMIK AKAKOM.
badi, Sab, 6-Des-2014 06:30:41

Autentikasi Dan Otorisasi User Menggunakan Framework Yii

(Oleh : Badiyanto)

Otentikasi adalah proses identifikasi pengguna. Ada beberapa aplikasi web memberikan kombinasi nama user/password atau email, melalui pihak ketiga, seperti lewat akun Twitter atau Facebook. Pengguna yang tampa melalui otentikasi disebut anonymous, atau guest/tamu. Terkait dengan otentikasi otorisasi. Otorisasi adalah proses menentukan apakah pengguna saat ini diperbolehkan untuk melakukan tugas tertentu atau tidak.

Komponen kunci

Proses otentikasi ini dirancang dalamYii menjadi cukup fleksibel, sehingga otentikasi dapat dilakukan dengan cara:

  • user statis(misalnya, nama uesr “demo”dan password “demo”dan admin passwordnya “admin”.
  • user dalam tabel yang ada dalam database
  • pakai pihak ketiga (misalnya, Facebook atauTwitter)
  • Light weight Directory Access Protocol(LDAP)

Identifikasi user terdapat pada file /protected/components/UserIdentity.php

?php
/**
 * UserIdentity represents the data needed to identity a user.
 * It contains the authentication method that checks if the provided
 * data can identity the user.
 */
class UserIdentity extends CUserIdentity
{
    /**
     * Authenticates a user.
     * The example implementation makes sure if the username and password
     * are both 'demo'.
     * In practical applications, this should be changed to authenticate
     * against some persistent user identity storage (e.g. database).
     * @return boolean whether authentication succeeds.
     */
    public function authenticate()
    {
        $users=array(
            // username => password
            'demo'=>'demo',
            'admin'=>'admin',
         );
        if(!isset($users[$this->username]))
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        elseif($users[$this->username]!==$this->password)
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        else
            $this->errorCode=self::ERROR_NONE;
        return !$this->errorCode;
    }
}
?>

 

untuk user statis 'demo'=>'demo', login : demo dan passwordnya 'demo' dan 'admin'=>'admin' user ‘admin’ passwordnya ‘admin’

Anda bisa menambahkan user statik


Buka /protected/components/UserIdentity.php pada bagian function authenticate() tambahkan seperti skrip berikut :

public function authenticate()
    {
     $users=array(
            // username => password
            'demo'=>'demo',
            'admin'=>'admin',
            'ana'=>'ana123?',
            'budi'=>’budi123?',
               
         );
    if(!isset($users[$this->username]))
            $this->errorCode=self::ERROR_USERNAME_INVALID;
    elseif($users[$this->username]!==$this->password)
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
    else
            $this->errorCode=self::ERROR_NONE;
        return !$this->errorCode;
    }

Uji Coba :

Membuat user dengan tabel

Buatlah user seperti skrip SQL dibawah ini :

CREATE TABLE user (
  id int(11) NOT NULL AUTO_INCREMENT,
  full_name char(50) CHARACTER SET utf8 NOT NULL,
  username varchar(128) CHARACTER SET utf8 NOT NULL,
  password varchar(128) CHARACTER SET utf8 NOT NULL,
  email varchar(128) CHARACTER SET utf8 NOT NULL,
  active tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

Bualtah modelnya dengan mengunakan gii Generator :

Cara menghubungkan UserIdentity dengan User, tujuannya agar rekaman dalam tabel user bisa digunakan untuk login ke sistem. Buka file /protected/components/UserIdentity.php kemudian  diubah menjadi sepeti pada kode program berikut :

php
/***********************************************
 * UserIdentity represents the data needed to
 * identity a user.
 * It contains the authentication method that checks
 * if the provided
 * data can identity the user.
 ***********************************************/
class UserIdentity extends CUserIdentity
{
 private $_id;

 public function authenticate()
   {
   $user=User::model()->findByAttributes(array('username'=>$this->username));
   if($user===null)
       $this->errorCode=self::ERROR_USERNAME_INVALID;
       else if($user->password!==md5($this->password))
            $this->errorCode = self::ERROR_PASSWORD_INVALID;
       else
        {
           $this->_id=$user->id;
           $this->errorCode=self::ERROR_NONE;
        }
        return !$this->errorCode;
   
    }

   public function getId()
       {
            return $this->_id;
      }

}

Untuk menyimpan password terenkripsi tambahkan trigger pada nodel User.php seperti skrip berikut:

// enkripsi Password //

protected function beforeSave()
    {
        if(parent::beforeSave())
        {
            if($this->isNewRecord)
            {
                $this->password=MD5($this->password);
            }
            else
                $this->password=MD5($this->password);
            return true;
        }
        else
            return false;
    }

Anda bisa menggunakan user yang tersimpan dalam tabel user dengan nama login yang terekam dalam kolom username pada tabel user.

Untuk membaca user identifikasi user

<?php
  echo "id=".Yii::app()->user->id;
  echo "<br>";
  echo "Nama lengkap :" .User::model()->findByPk(Yii::app()->user->id)->full_name;
  echo "<br>";
  echo "Nama Login   :" .User::model()->findByPk(Yii::app()->user->id)->username;
?>

selamat mencoba


Rajin Pangkal Pandai



Komentar Untuk memberikan komentar, Silahkan Login atau Daftar sebagai pengguna
oraliwe@g.eamale.com, Jum, 14-Jul-2017 18:23:30
ovihiya@g.eamale.com, Jum, 14-Jul-2017 18:10:45
icobiwox@m.eamale.com, Jum, 14-Jul-2017 17:47:00
idofha@email.eamale.com, Jum, 14-Jul-2017 17:42:24
oxohfeqiv@m.eamale.com, Jum, 14-Jul-2017 17:34:38
ponejek@email.eamale.com, Jum, 14-Jul-2017 17:29:57
evoqunitu@as.eamale.com, Jum, 14-Jul-2017 17:26:02
Halaman :
artikel, Sel, 22-Agt-2017 08:53:24
Sosialisasi Prodi TI Semester Ganjil 2017/2018
admin, Sen, 8-Mei-2017 04:30:22
Info Penggantian Jadwal Kuliah
admin, Rab, 5-Apr-2017 05:47:27
PENGUMUMAN BEASISWA PPA
admin, Sel, 28-Feb-2017 08:22:12
PENGUMUMAN PKL PRODI TEKNIK INFORMATIKA & SISTEM INFORMASI SEMESTER GENAP T.A. 2016/2017
admin, Jum, 18-Nov-2016 12:26:13
Penambahan Kuota Sertifikasi Internasional
admin, Kam, 17-Nov-2016 08:05:01
Pembagian Kelas Sertifikasi
admin, Jum, 4-Nov-2016 07:49:28
Kuliah Umum NIIT Bagi Mahasiswa Baru 2016
>> Lainnya . . .
admin, Sel, 4-Agt-2015 08:27:35
Kalender Akademik
admin, Jum, 13-Sep-2013 08:05:25
Blog STMIK AKAKOM Yogyakarta
>> Lainnya . . .

Visi & Misi Kumpulan Pedoman & Peraturan Sikeu Portal
.:: Pencarian
.:: Login