是否有简单的方法来获取特定用户的凭证/权限?访问用户凭证/权限
我见过hasCredential()
方法,但我想动态检查任何用户,而不仅仅是当前用户。
我知道我可以使用sfContext::getInstance()->getUser();
来获得当前的用户对象,但有没有办法加载任何用户并获得他/她的凭据?
感谢
是否有简单的方法来获取特定用户的凭证/权限?访问用户凭证/权限
我见过hasCredential()
方法,但我想动态检查任何用户,而不仅仅是当前用户。
我知道我可以使用sfContext::getInstance()->getUser();
来获得当前的用户对象,但有没有办法加载任何用户并获得他/她的凭据?
感谢
它的种类取决于您使用的“商店”。在Symfony中,当前用户(与sfContext::getInstance()->getUser()
一起提供的那个用户)更多地是该会话的抽象。
因此,最常用的身份验证插件sfDoctrineGuard具有控制器(sfGuardAuth),它们处理登录表单等事情,一旦成功完成,它将相应地填充sfUser
。
所以,如果你想检查用户的权限,你将不得不检查底层商店。如果您使用的是sfDoctrineGuard
,则可以通过sfGuardUserTable::getInstance()->find(...)
检索用户模型。在sfGuardUser
上,您可以拨打hasPermission($name)
函数进行检查。
如果您正在使用sfGuardPlugin或sfDoctrineGuardPlugin您可以通过调用getAllPermissions()
里面的行动得到所有用户的权限:
$this->getUser()->getGuardUser()->getAllPermissions();
或内部型号:
sfContext::getInstance()->getUser()->getGuardUser()->getAllPermissions();
无论哪种方式您必须致电getGuardUser
。
如果您使用的是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凭据)用户。
祝你好运
我的用户设置是,我有一个管理员和一个管理员。管理员有几个主持人。我想要做的是检查我登录的主持人的父管理员的凭据。所以理想情况下,我需要得到crrent用户(很简单),但然后得到它的管理关系,并获得管理员的凭据 – terrid25
像这样:'$ user = sfContext :: getInstance() - > getUser(); $ user-> getProfile() - > getAdmin() - > getUser() - > hasCredential('Can.Delete');'但显然这不起作用 – terrid25
你使用sfDoctrineGuard吗?如果是这样,你可以使用'$ user-> getUserModel() - > getAdmin() - > hasPermission('Can.Delete')'。你只需要在'sfGuardUser'模型中定义'getAdmin()'函数(如果它不是已经存在的关系)。 –