首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sfDoctrineGuardPlugin分离前端和后端用户

使用sfDoctrineGuardPlugin分离前端和后端用户
EN

Stack Overflow用户
提问于 2011-04-04 23:48:28
回答 2查看 2K关注 0票数 5

我正在开始一个项目,我正在使用symfony,我是第一次使用symfony,真的很棒实际上,我已经安装了sfDoctrineGuardPlugin,一切都好到现在,为什么?,因为前端用户可以在后端登录,反之亦然,我不想这样,所以,我开始谷歌,我在这里找到了Symfony sfDoctrineGuardPlugin custom login query,但我不知道我应该把功能放在哪里,所以我还没有测试它。

因为我不希望前端用户可以在后台登录,所以我想我可以使用凭证,可以吗??但是,symfony在用户登录后检查他们的凭据,我也不想这样做,那么,我如何才能实现这一点呢?也许如果我可以在会话中有名称空间,我可以检查后端名称空间和前端用户中是否有管理员,所以我认为他们永远不会得到修复。

我真的不知道sfDoctrineGuardPlugin是否有一些配置可以处理这种情况,是否存在这样的配置??

另外,在我的后端,我希望有一个页面来管理前端用户,并为后端用户,因为前端用户将有一个个人资料和地址,认为这是容易得多,但我不知道从哪里开始。

我需要一些帮助

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-12 21:46:20

经过几天的编码,我可以完全按照我的想法来做,我将分享我的解决方案:

我从我在SO中找到的一个例子开始,你可以在这里阅读帖子:

Symfony sfDoctrineGuardPlugin custom login query它给了我一个想法,我执行了它,所以,我创建了\lib\Util.class.php,带有to函数,一个用于查询后端用户,另一个用于前端用户

代码语言:javascript
复制
static public function retrieveCustomer($username, $isActive = true)
{
    $query = Doctrine_Core::getTable('sfGuardUser')->createQuery('u')
    ->leftJoin('u.Groups g')
    ->leftJoin('g.Permissions p')
    ->where('u.username = ?', $username)
    ->addWhere('u.is_active = ?', $isActive)
    ->addWhere('g.name = ?', 'customers');

    return $query->fetchOne();
}

static public function retrieveAdmin($username, $isActive = true)
{
    $query = Doctrine_Core::getTable('sfGuardUser')->createQuery('u')
    ->leftJoin('u.Groups g')
    ->leftJoin('g.Permissions p')
    ->where('u.username = ?', $username)
    ->addWhere('u.is_active = ?', $isActive)
    ->whereIn('g.name', array('administrators','operators'));

    return $query->fetchOne();
}  

现在,在每个应用程序的app.yml中,我覆盖了插件的默认查询

代码语言:javascript
复制
#Example for apps/backend/config/app.yml
all:
    sf_guard_plugin:
        retrieve_by_username_callable: Util::retrieveAdmin

直到现在一切都很好,但我开始面临另一个问题,所以我打开了一个新线程:Overwriting isAuthenticated() in symfony,在那里我得到了解决方案的最后一步,即为每个应用程序设置不同的会话名称,因此,在每个应用程序的factories.yml中:

代码语言:javascript
复制
#apps\backend\config\factories.yml
storage:
  class: sfSessionStorage
  param:
    session_name: backend

现在一切都设置好了,前端用户不能登录后台app,反之亦然。

请随时发表评论

票数 2
EN

Stack Overflow用户

发布于 2011-04-05 01:55:57

最常见的方法是通过凭据,我的backend applications security.yml如下所示:

代码语言:javascript
复制
all:
  is_secure: on
  credentials: [login_backend]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5540995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档