Yii2 Access Control Filter

Ekrem Hatipoğlu
KOUOSL

--

Access Control Filter , bir kullanıcının bir şeyler yapmak için yeterli izne sahip olup olmadığını doğrulama işlemidir. Yii, iki tane yetkilendirme yöntemi sunar: Access Control Filter (ACF) ve Role-Based Access Control (RBAC).

allow: İlgili olaya izin verilip verilmeyeceğini kontrol eder. ‘true’ yada ‘false’ değer alır.

roles: Kullanıcıların sayfada hangi sayfalara erişip erişemeyeceğini denetler .İki tane özel roles vardır bunlar;

  • ?: Misafir Kullanıcı (Henüz login olmamış)
  • @: Giriş yapmış kullanıcı

actions: Bu kuralın hangi action’larda eşleştiğini belirtir. Bu değer bir dizi(array) olmalıdır. Büyük-küçük harf duyarlıdır. Bu seçenek boşsa veya ayarlanmıyorsa, kuralın tüm action’lar için geçerli olduğu anlamına gelir.

verbs: Request(örneğin. GET, POST) metodlarının kuralları belirtilir. Büyük-küçük harf duyarlıdır.

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

Yukarıdaki kodda ACF(Access Control Filter) SiteController’a bir behaivor(davranış) olarak eklenmiştir. ACF kullanmanın tipik yolu budur. only bölümü ACF’nin yalnızca giriş(login), çıkış(logout) ve kayıt(signup) işlemlerine uygulanması gerektiğini belirtir. SiteController’daki diğer tüm eylemler ACF denetimine tabi değildir. rules bölümü, aşağıdaki gibi okunan erişim kurallarını listeler:

  • ?: Misafir Kullanıcı (Henüz login olmamış)
  • @: Giriş yapmış kullanıcı
  • Tüm misafir(Login olmamış) kullanıcıların login ve signup işlemlerine erişmesine izin ver. rules bölümündeki ‘?’ işareti “misafir kullanıcılar” ı temsil eden özel bir işarettir.
  • Kimliği doğrulanmış kullanıcıların(Login olmuş) logout eylemine erişmesine izin verin. ‘@’ Karakteri, “kimliği doğrulanmış kullanıcılar” ı temsil eden başka bir özel işarettir.

‘rules’ bölümüne ‘@’ işareti ile tanımladıktan sonra kullanıcının giriş yapmadan bu eylemi gerçekleştirmeye çalışıyorsa direk login sayfasına yönledirilir.

--

--