2011-01-19 79 views
3

我使用symfony sfDoctrineGuardPlugin來管理前端用戶和後端用戶的身份驗證。這很好,除了我不希望前端用戶能夠登錄到後端應用程序。我可以設置憑據,但用戶獲得身份驗證後會檢查憑據。我想要的是讓sigin以表單形式永遠不會驗證用戶,即不在後端組中。我怎樣才能做到這一點?Symfony sfDoctrineGuardPlugin自定義登錄查詢

回答

2

我想我找到了一個更好的解決方案。 sfDoctrineGuard插件具有自己的發佈驗證器,用於爲用戶檢索檢查可選的可調用函數。

//app.yml 
all: 
    sf_guard_plugin: 
    retrieve_by_username_callable: sfGuardUser::getForBackend 

//sfGuardUser.class.php 

    public static function getForBackend($username) 
    { 
    $query = Doctrine::getTable('sfGuardUser')->createQuery('u') 
     ->leftJoin('u.Groups g') 
     ->leftJoin('g.Permissions p') 
     ->where('u.username = ? OR u.email_address = ?', array($username, $username)) 
     ->addWhere('u.is_active = ?', true) 
     ->addWhere('p.name = ?', 'backend'); 

    return $query->fetchOne(); 
    } 
+0

嗨@Dziamid,我試圖做同樣的,但是,我應該在哪裏把這個功能? – 2011-04-04 15:18:02

0

我想你只需要添加:

storage: 
    class: sfSessionStorage 
    param: 
     session_name: sf_backend 

在您backend/config/factories.yml 結束默認情況下,symfony的股份會話cookie,這個解決方案,symfony的分開這個餅乾。