访问用户凭据/权限

时间:2011-11-22 13:47:45

标签: symfony1 symfony-1.4

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

我见过hasCredential()方法,但我想动态检查任何用户,而不仅仅是当前用户。

我知道我可以使用sfContext::getInstance()->getUser();来获取当前的用户对象,但有没有办法加载任何用户并获取他/她的凭据?

由于

3 个答案:

答案 0 :(得分:0)

如果您使用的是sfGuardPlugin或sfDoctrineGuardPlugin,您可以通过以下操作调用getAllPermissions()来获取所有用户权限:

$this->getUser()->getGuardUser()->getAllPermissions();

或内部模型:

sfContext::getInstance()->getUser()->getGuardUser()->getAllPermissions();

无论哪种方式,您都必须致电getGuardUser

答案 1 :(得分:0)

这取决于你正在使用的“商店”。在Symfony中,当前用户(提供sfContext::getInstance()->getUser()的用户)更像是会话的抽象。

因此,最常用的身份验证插件sfDoctrineGuard具有处理器(sfGuardAuth),可以处理登录表单等内容,一旦成功,它将相应地填充sfUser

因此,如果要检查用户的权限,则必须检查基础商店。如果您使用的是sfDoctrineGuard,则可以通过sfGuardUserTable::getInstance()->find(...)检索用户模型。在sfGuardUser上,您可以调用hasPermission($name)函数进行检查。

答案 2 :(得分:0)

如果您使用的是sfGuardPlugin,则数据库中包含sf_guard_usersf_guard_permissionsf_guard_group表。因此,您可以查询该表以获取特定用户的权限,例如:

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

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

$credentials = $user->getPermissions();

$credentials中,您将拥有所选用户的所有权限(权限是sfGuardPlugin中的凭据)的数组。

祝你好运