我有一个symfony项目,想要添加社区功能。
每个人都可以作为管理员开放社区,并邀请人们加入社区。 p>
管理员拥有的权限多于普通社区用户。
问题是,我想使用Syfony的sfguarduser,sfguardgroup,sfguardpermission
答案 0 :(得分:3)
嘿,这会对你有所帮助;)
行动内部:
class myAccountActions extends sfActions
{
public function executeDoThingsWithCredentials()
{
$user = $this->getUser();
// Check if the user has a credential
echo $user->hasCredential('foo'); => true
// Check if the user has both credentials
echo $user->hasCredential(array('foo', 'bar')); => true
// Check if the user has one of the credentials
echo $user->hasCredential(array('foo', 'bar'), false); => true
// Remove a credential
$user->removeCredential('foo');
echo $user->hasCredential('foo'); => false
// Remove all credentials (useful in the logout process)
$user->clearCredentials();
echo $user->hasCredential('bar'); => false
}
}
在图层内:
<?php if ($sf_user->hasCredential('section3')): ?>
....
<?php endif; ?>
您可以考虑另外使用:
if($user->hasGroup('SOME_GROUP'))
答案 1 :(得分:2)
为此目的使用sfguard架构是否有意义?
当然,但你需要稍微解决一下。默认情况下,Symfony会在会话中存储凭据,这意味着在会话到期之前它们不会失效。如果您希望通过向某个群组添加某人或授予他们权限来立即生效,这是一个大问题。
要解决此问题,您需要执行以下操作之一:
无论哪种方式,您都必须熟悉Symfony和sfGuardDoctrine用户系统。请查看sfGuardSecurityUser::signIn
,以便您熟悉默认情况下凭据的工作方式。
如何检查特定用户是否拥有特定群组的特定权限?
特里斯坦对此非常透彻。您还需要查看sfDoctrineGuard readme。请注意,对于签名用户的实时更改凭据更改的任何解决方案,您需要覆盖Tristan列出的大多数(如果不是全部)方法以执行某种失效。另外,请查看this related question,这可能会有帮助。