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

Bupati Bantul Resmikan Aplikasi ResiDeswita
Bupati Bantul Resmikan Aplikasi ResiDeswita

3 tahun yang lalu

  YOGYAKARTA -  Selasa 02/11/2021 bertempat di Pondok Bakaran Manding, Jl. Parangtritis No.KM 11, Manding, Sabdodadi, Kapanewon Bantul, Aplikasi Registrasi ...

Selengkapnya
Woro Jogja : Aplikasi Karya STMIK Akakom untuk Monitoring Kontingen DIY di PON 2021
Woro Jogja : Aplikasi Karya STMIK Akakom untuk Monitoring Kontingen DIY di PON 2021

3 tahun yang lalu

YOGYAKARTA - Mahasiswa Teknik Informatika Tri Wibowo Ridho Permana dan Dominikus Afendi Nahak beserta Yosef Murya Kusuma Ardhana selaku dosen ...

Selengkapnya
STMIK Akakom Laksanakan Uji Coba Perkuliahan Blended Learning Terbatas
STMIK Akakom Laksanakan Uji Coba Perkuliahan Blended Learning Terbatas

3 tahun yang lalu

Yogyakarta - Berkenaan dengan penyebaran COVID-19 yang melandai, STMIK Akakom melaksanakan uji coba Blended Learning Terbatas (BLT) pada tanggal 4 - 22 ...

Selengkapnya