2012-09-06 82 views
0

我無法找到解決我的問題的方法。 我有一個使用Auth組件和ACL組件的CakePHP網站。 我不希望不活動的用戶能夠登錄。Auth和ACL在CakePHP中有條件

我發現user身份驗證組件可以做到這一點。 所以在我AppController中beforeFilter裏面,我添加了這個:

$this->Auth->userScope = array('User.active' => 1); 

當然,在我的UserController的beforeFilter,父方法的調用。

但是,這並不worj,我仍然能夠登錄與積極設置爲0的用戶。 我認爲這可能是因爲ACL組件?

這是我在beforFilter AppController的

public function beforeFilter() 
    { 
    if (!$this->Session->check('Auth.User')) 
     $this->layout = 'identification'; 
    $this->Auth->allow('display'); 

    //Configure AuthComponent 
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); 
    $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login'); 
    $this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'welcome'); 
    $this->Auth->userScope = array('User.active' => 1); 
    } 

我缺少什麼?

+0

U是否使用cakePHP 2.0或1.3? –

+0

我正在使用CakePHP 2.0 – azerto00

回答

2

如果你不做,你總是可以使用一種替代方案:

$user = $this->Auth->user(); 
if($user['User']['active'] == 0){ 
    $this->redirect($this->Auth->logout()); 
    $this->Session->setFlash('You are not active.'); 
} 
+0

好的,我在$ this-> Auth-> login()方法後執行了檢查,如果用戶不活動,調用$ this-> Auth-> logout()並且重定向到一個好的佈局。但它不太好,因爲我需要登錄用戶登錄用戶。不是很好的安全... – azerto00

+0

我知道,但這是目前最好的拍攝,直到你找到一個更好的解決方案,如果你找到它,隨時張貼在這裏。 :D – 2012-09-06 15:05:17