2011-01-19 43 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的分开这个饼干。