2016-03-19 8 views
1

Yii 1.10 kullanıyorum ve oturum ile ilgili bir sorun var. Oturum açan bir kullanıcı sistemden bir süre ayrılırsa, Yii onu algılar ve oturumu yok eder, Bu durumda, kullanıcı herhangi bir denetleyiciye veya herhangi bir denetleyicinin eylemine erişememelidir. Ama benim durumumda bazı kontrolörler hala erişilebilir ve bana sonuçları gösteriyor. Hangisi iyi değil. Lütfen, erişilebilirliği önlemek için ne yapmam gerektiğini, yanlış bir şey yapıyorum. Lütfen çıkmama yardım edin.Yii oturumu zaman aşımına uğradı ancak bazı denetleyicilere hala erişilebilir. Kullanıcı oturum açma sayfasına nasıl gönderilir

+0

size kullanımını önlemek için şu anda ne yapıyoruz kontrol cihazlarınızın/eylemlerin. Kullanıcının hala giriş yapıp yapmadığını kontrol ediyor musunuz? –

+0

@Evil_skunk Eğer her seferinde oturumu kontrol etmeye başlayacaksam, eğer kullanıcı giriş yapıp yapmadığımı kontrol etmek için her eylemde kontrol etmem gerekecek. Denetleyici sınıfında veya bir kez kontrol edeceğim yerde kontrol etmek istiyorum. – Tauseef

cevap

2

Yii şekilde yapmak isterseniz, access control filter'u kullanmalısınız. Mevcut kullanıcının mevcut kontrolör eylemine erişip erişmediğini temel olarak kontrol eder.

Basit kullanım için yeterli olmalıdır. Karmaşık durumlarda, RBAC kullanmalısınız. Sen yii içinde RBAC nasıl kullanılacağı hakkında daha fazla ayrıntı elde edebilirsiniz here

1

Böyle o şey yapabilirim:

sizin Module.php

public function beforeControllerAction($controller, $action) { 
     if (parent::beforeControllerAction($controller, $action)) { 
      $controller->layout = 'admin_dashboard'; 
      if(empty(Yii::app()->session['admin_id']) || empty($_SESSION['admin_id'])){ 
       unset($_SESSION); 
       Yii::app()->user->logout(); 
      } 
      $route = strtolower ($controller->id . '/' . $action->id); 
      //Add those page which not requires authentication like: 'action/controller', 
      $publicPages = array(

      ); 
      if (Yii::app()->user->isGuest && !in_array($route, $publicPages)){ 
       Yii::app()->getModule('admin')->user->loginRequired(); 
      } 
      else 
      { 
       return true; 
      } 
     } else 
      return false; 
    } 
İlgili konular