是否有一种简单的方法可以获得特定用户的凭据/权限?
我见过hasCredential()
方法,但我想动态检查任何用户,而不仅仅是当前用户。
我知道我可以使用sfContext::getInstance()->getUser();
来获取当前的用户对象,但有没有办法加载任何用户并获取他/她的凭据?
由于
答案 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_user
,sf_guard_permission
和sf_guard_group
表。因此,您可以查询该表以获取特定用户的权限,例如:
$c = new Criteria();
$c->add('username',$specificName);
$userPeer = new sfGuardUserPeer();
$user = $userPeer->doSelect($c);
$credentials = $user->getPermissions();
在$credentials
中,您将拥有所选用户的所有权限(权限是sfGuardPlugin中的凭据)的数组。