gpt4 book ai didi

php - 使用 sfDoctrineGuardPlugin 分离前后端用户

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:47 26 4
gpt4 key购买 nike

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

因为我不希望前端用户可以在后端登录,我想我可以使用凭据,可以吗?但是,symfony 在用户登录后检查用户凭据,我也不想要,所以,我怎么能做到这一点?也许如果我可以在 session 中有命名空间,我可以检查后端命名空间中是否有管理员也适用于前端用户,所以我认为他们永远不会得到修复。

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

此外,在我的后端,我希望有一个页面来管理前端用户,以及其他用于后端用户的页面,因为前端用户将有一个配置文件和地址,我认为这样更容易,但我不知道从哪里开始。

这里需要一些帮助

谢谢

最佳答案

经过几天的编码,我能够完全按照我的意愿去做,我将分享我的解决方案:
我从在 SO 中找到的示例开始,你可以在这里阅读帖子:
Symfony sfDoctrineGuardPlugin custom login query它给了我一个想法,我执行了它,所以,我创建了\lib\Util.class.php,带有函数,一个用于查询后端用户,另一个用于前端用户

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 中,我覆盖了插件的默认查询

#Example for apps/backend/config/app.yml
all:
sf_guard_plugin:
retrieve_by_username_callable: Util::retrieveAdmin

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

#apps\backend\config\factories.yml
storage:
class: sfSessionStorage
param:
session_name: backend

现在一切就绪,前端用户无法登录后端应用程序,反之亦然。

欢迎评论

关于php - 使用 sfDoctrineGuardPlugin 分离前后端用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com