Berita

Autentikasi dan Otorisasi User Menggunakan Framework Yii

9 tahun yang lalu

(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


Berita Lainnya

Kunjungan SMK N 2 Magetan Gelombang Terakhir
Kunjungan SMK N 2 Magetan Gelombang Terakhir

8 tahun yang lalu

Sabtu, 19 November 2016, sebanyak 30 orang siswa siswi dari SMK N 2 Magetan, Kelas XII TKJ B melaksanakan pelatihan mikrotik di STMIK AKAKOM ...

Selengkapnya
Hasil Sertifikasi Internasional, Loloskan 24 Mahasiswa AKAKOM
Hasil Sertifikasi Internasional, Loloskan 24 Mahasiswa AKAKOM

8 tahun yang lalu

Kegiatan Sertifikasi telah dilaksanakan hari ini di lab terpadu STMIK AKAKOM Yogyakarta. Selamat kepada 24 mahasiswa yang telah lolos Sertifikasi Internasional ...

Selengkapnya
Penambahan Kuota Sertifikasi Internasional
Penambahan Kuota Sertifikasi Internasional

8 tahun yang lalu

  STMIK AKAKOM berkerjasama dengan Telkomsel, menyelenggarakan sertifikasi internasional melalui program TELKOMSEL INTERNATIONAL CERTIFICATION PROGRAM FOR GLOBAL ACHIEVEMENT. Program ini ...

Selengkapnya