0

Hak Akses di Yii 2

Hak Akses (Authorization) adalah proses untuk memverifikasi apakah user punya cukup permission/izin untuk mengakses sebuah action pada controller atau tidak.
HAK akses di yii 2

Di yii2 sendiri ada 2 jenis hak akses :
1) Access Control Filter (ACF)
2) Role-Based Access Control (RBAC).

Disini saya akan bahas yang Access Control Filter (ACF).

ACCESS CONTROL FILTER

Access Control Filter (ACF) adalah sebuah metode hak akses (yang menggunakan class yii\filters\AccessControl) yang berfungsi untuk mengontrol jenis akses yang sederhana. ACF bisa digunakan di dalam controller (seperti yii1 sebelumnya).

Ketika user merequest sebuah action (misal: actionSignup), ACF akan mengecek dahulu apakah user tersebut diizinkan untuk mengakses actionSignup.

Di bawah ini adalah penggunaan ACF di dalam SiteController.php

use yii\web\Controller;
use yii\filters\AccessControl;
class SiteController extends Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['logout', 'signup'],
                'rules' => [
                    [
                        'actions' => ['signup'],
                        'allow' => true,
                        'roles' => ['?'],
                    ],
                    [
                        'actions' => ['logout'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
        ];
    }
}

Dari kode diatas, ACF diimplementasikan di dalam fungsi behaviours(). Pada opsi only terdapat dua buah action yaitu logout dan signup yang telah didaftarkan ke dalam list ACF. Pada action signup terdapat tanda ? artinya action signup dapat diakses oleh semua user tanpa harus login. Sedangkan pada action logout terdapat tanda @ artinya bisa diakses jika user sudah login.

Ada beberapa opsi rules(aturan) ACF yang perlu kamu ketahui :

1) allow : menentukan apakah action bisa diakses atau tidak, jika diset true maka action bisa diakses, sedangkan false action tidak bisa diakses. Jika option allow tidak diset, maka akan bernilai false

2) actions : menentukan action mana yang didaftarkan ke ACF. Misal actionBeranda didaftarkan, maka penulisannya seperti ini 'actions' => ['beranda']

3) controllers : menentukan controllers mana yang didaftarkan ke ACF. Ini biasa dipakai buat module.

4) roles : menentukan jenis akses yang diberikan ke user. Terdapat 2 roles secara default yaitu ? dan @. Jika ? berarti user bisa mengakses tanpa harus login. Jika @ user harus login untuk mengaksesnya.

5) ips: menentukan IP address user yang diperbolehkan untuk mengakses action. Contohnya 'ips' => '192.168.*' atau 'ips' => '192.168.0.4'

6) verbs: menentukan tipe request method (e.g. GET, POST).

7) matchCallback: menentukan apakah user diperbolehkan untuk mengakses action atau tidak berdasarkan suatu kondisi (if).
Misal :
'actions' => ['kirim'],
'matchCallback' => function ($rule, $action) {
return date('d-m') === '31-10';
}

Dari kode diatas, action kirim akan bisa diakses setiap tanggal 31 bulan 10.

8) denyCallback: menentukan sebuah return jika user tidak diizinkan mengakses action.
Contoh :
'actions' => ['ambil'],
'allow' => 'false',
'denyCallback' => function ($rule, $action) {
throw new \Exception('You are not allowed to access this page');
}

Dari kode diatas, jika user tidak diijinkan untuk mengakses actionAmbil, maka dihalaman akan muncul pesan You are not allowed to access this page

 

semoga bermanfaat!

Ambar Hasbiyatmoko

Hello, I'm web developer. Passionate about programming, web server, and networking.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.