Performantere Authorisierungen in Symfony2
Kommentare

Ein neues „Killer-Feature“ für Symfony2 stellt Johannes Schmitt auf seinem Blog vor. Die Symfony2-Security-Komponente soll schneller und einfacher werden. Zu diesem Zweck präsentiert Schmitt eine Expression-basierte

Ein neues „Killer-Feature“ für Symfony2 stellt Johannes Schmitt auf seinem Blog vor. Die Symfony2-Security-Komponente soll schneller und einfacher werden. Zu diesem Zweck präsentiert Schmitt eine Expression-basierte Sprache, um auch komplexe Authorisierungsroutinen einfach und performant umsetzen zu können.

Schmitt stellt das Beispiel einer Abfrage vor, in der überprüft werden soll, ob ein User Rolle A, Rolle B oder Rolle C inne hat. Dies lässt sich herkömmlicherweise über das Schreiben eines eigenen Security Voter mit einem speziellen Attribut erledigen oder über die folgende Codepassage:

$context->isGranted('A') || ($context->isGranted('B') && $context->isGranted('C'))
  

Doch das Problem: Jedesmal einen Voter selbst zu schreiben ist umständlich, isGranted() ist ein Performance-Fresser!

Mit Schmitts neuer Authorisierungssprache soll sich das Problem nun über einen einzigen isGranted-Aufruf erschlagen lassen:

use JMSSecurityExtraBundleSecurityAuthorizationExpressionExpression;

$context->isGranted(new Expression('hasRole("A") or (hasRole("B") and hasRole("C"))'));

  

Die Sprache steht im JMSSecurityExtraBundle auf GitHub bereit. Dort werden auch weitere Beispiele in der umfangreichen Doku beschrieben.

Sollte man sich mal anschauen!

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -