Symfony1 访问用户凭据/权限

Symfony1 访问用户凭据/权限,symfony1,symfony-1.4,Symfony1,Symfony 1.4,是否有一种简单的方法可以获得特定用户的凭据/权限 我已经看到了hascdential()方法,但我想动态检查任何用户,而不仅仅是当前用户 我知道我可以使用sfContext::getInstance()->getUser()获取当前用户对象,但是否有方法加载任何用户并获取其凭据 谢谢如果您正在使用sfGuardPlugin或sfDoctrineGuardPlugin,您可以通过调用getAllPermissions()内部操作获得所有用户权限,方法是: $this->getUser()-&

是否有一种简单的方法可以获得特定用户的凭据/权限

我已经看到了
hascdential()
方法,但我想动态检查任何用户,而不仅仅是当前用户

我知道我可以使用
sfContext::getInstance()->getUser()
获取当前用户对象,但是否有方法加载任何用户并获取其凭据


谢谢

如果您正在使用sfGuardPlugin或sfDoctrineGuardPlugin,您可以通过调用
getAllPermissions()
内部操作获得所有用户权限,方法是:

$this->getUser()->getGuardUser()->getAllPermissions();
或具有以下功能的内部模型:

sfContext::getInstance()->getUser()->getGuardUser()->getAllPermissions();
无论哪种方式,您都必须调用
getGuardUser

这取决于您使用的“存储”。在Symfony中,当前用户(随
sfContext::getInstance()->getUser()
提供的用户)更多地是会话的抽象

因此,最常用的身份验证插件sfDoctrineGuard具有控制器(sfGuardAuth),可以处理诸如登录表单之类的事情,一旦成功,它将相应地填充
sfUser


因此,如果要检查用户的权限,必须检查底层存储。如果使用的是
sfDoctrineGuard
,则可以通过
sfGuardUserTable::getInstance()->查找(…)
检索用户模型。在
sfGuardUser
上,您可以调用
hasPermission($name)
函数进行检查。

如果您正在使用sfGuardPlugin,则数据库中有
sf\u guard\u用户
sf\u guard\u权限
sf\u guard\u组
表。因此,您可以查询该表以获得特定用户的权限,例如:

$c = new Criteria();
$c->add('username',$specificName);

$userPeer = new sfGuardUserPeer();
$user = $userPeer->doSelect($c);

$credentials = $user->getPermissions();
这样,在
$credentials
中,您将拥有所选用户的所有权限(权限是sfGuardPlugin中的凭据)的数组


祝你好运

我的用户设置是,我有一个管理员和一个版主。一个管理员有几个版主。我要做的是检查我登录的版主的家长管理员的凭据。因此,理想情况下,我需要获取crrent用户(非常简单),然后获取它的管理员关系并获取管理员证书,比如:
$user=sfContext::getInstance()->getUser()$用户->getProfile()->getAdmin()->getUser()->hasCredential('Can.Delete')但显然这不起作用。您使用的是sfDoctrineGuard吗?如果是这样,您可以使用
$user->getUserModel()->getAdmin()->hasPermission('can.Delete')
。您只需要在
sfGuardUser
模型中定义
getAdmin()
函数(如果它还不是一个关系的话)。好的,我已经设法解决了我的问题:
$user->getProfile()->getAdmin()->getUser()->hasPermission('Can.Delete')