[英]advanced / dynamic permissions on sfguard - symfony
我有一個symfony項目,想添加社區功能。
每個人都可以以管理員身份打開社區,並邀請其他人加入社區。
管理員具有比普通社區用戶更多的權限。
問題是,我想使用Syfony的sfguarduser,sfguardgroup,sfguardpermission
嘿,這會對您有所幫助;)
內部動作:
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'))
來源: Symfony層內
為此目的使用sfguard架構有意義嗎?
絕對可以,但是您需要對其進行一些修復。 默認情況下,Symfony將憑據存儲在會話中,這意味着直到您的會話過期,它們才會失效。 當您希望通過將某人添加到組或授予他們權限而立即見效時,這是一個大問題。
要解決此問題,您需要執行以下操作之一:
無論哪種方式,您都必須熟悉Symfony和sfGuardDoctrine用戶系統。 看一下sfGuardSecurityUser::signIn
以便您熟悉憑據在默認情況下的工作方式。
如何檢查特定用戶是否對特定組具有特殊權限?
特里斯坦(Tristan)對此進行了詳盡的報道。 您還需要看一下sfDoctrineGuard自述文件 。 請注意,對於其中已針對登錄用戶實時進行憑據更改的任何解決方案,您都需要覆蓋Tristan列出的大多數方法(如果不是全部)來執行某種無效操作。
另外,查看此相關問題 ,可能會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.