보안, 라우팅, 서비스 및 검증에서 표현식을 사용하는 방법
Symfony에는 강력한 표현 언어 구성 요소가 포함되어 있습니다. 이를 통해 구성에 고급 사용자 정의 논리를 추가할 수 있습니다 .
Symfony 프레임워크는 다음에서 표현식을 효과적으로 활용합니다.
- 경로 일치 조건
- ;보안 검사
- (아래 설명) 및 접근 제어를 위해 Allow_if를 사용 ;
- 확인 . 33 만들기 부사절: 표현식 사용에 대한 자세한 내용은
- Expression Grammar을 참조하세요.
¶허용됨 ROLE_ADMIN
역할에 추가 ,
허가됨
또한 마찬가지입니다. 을 수락하세요. 표현식
객체:use Symfony\Component\ExpressionLanguage\Expression;// ... public function indexAction(){
$this->denyAccessUnlessGranted(new Expression(
'"ROLE_ADMIN" in roles or (user and user.isSuperAdmin())'
)); // ...}
이 예에서 현재 사용자에게 ROLE_ADMIN
ROLE_ADMIN
或者当前的用户对象的isSuperAdmin()
方法返回true
那么访问将被授权(注意:你的用户对象未必拥有isSuperAdmin
方法,这个方法只为此例出现)。
这就用到了一个表达式,你还可以学习更多关于表达languange的语法,参考表达式语法。
在表达式中,你可以访问以各种变量:
user
- 用户对象(或者是
anon
,如果未经认证的话)。 roles
- 用户所拥有的角色数组,包括角色层级(角色层级)但是不包括
IS_AUTHENTICATED_*
属性(参考下面的功能)。 object
- 第二作为个参数传到
isGranted
方法的对象(如果有的话)。 token
- 令牌对象。
trust_resolver
AuthenticationTrustResolverInterface
接口,其对象是:可能你希望使用下面的is_*
#🎜🎜이 있는 경우 # 또는 현재 사용자 개체의 isSuperAdmin()
메서드가
을 반환합니다.< code class ="notranslate">true 그러면 액세스가 승인됩니다(참고: 사용자 개체에 가 없을 수도 있습니다. isSuperAdmin< /code>
메서드, 이 메서드는 이 예에만 나타납니다. #🎜🎜##🎜🎜#
#🎜🎜##🎜🎜##🎜🎜##🎜🎜#이것은 표현을 사용하는 경우에도 언어 표현의 문법에 대해 자세히 알아볼 수 있습니다. # 🎜🎜 ##🎜🎜##🎜🎜##🎜🎜#표현 구문#🎜🎜##🎜🎜#< /em> #🎜🎜##🎜🎜#. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#표현식에서 다양한 변수에 액세스할 수 있습니다. #🎜🎜##🎜🎜##🎜🎜#< ul class=" docutils">
ROLE_ADMIN
ROLE_ADMIN
或者当前的用户对象的isSuperAdmin()
方法返回true
那么访问将被授权(注意:你的用户对象未必拥有isSuperAdmin
方法,这个方法只为此例出现)。user
anon
,如果未经认证的话)。roles
IS_AUTHENTICATED_*
属性(参考下面的功能)。object
isGranted
方法的对象(如果有的话)。token
trust_resolver
AuthenticationTrustResolverInterface
接口,其对象是:可能你希望使用下面的is_*
#🎜🎜이 있는 경우 # 또는 현재 사용자 개체의 isSuperAdmin()
메서드가 가 없을 수도 있습니다. isSuperAdmin< /code>
사용자
#🎜🎜#anon
#🎜🎜##🎜🎜#, 인증되지 않은 경우). #🎜🎜##🎜🎜##🎜🎜#역할
#🎜🎜#IS_AUTHENTICATED_*
#🎜🎜##🎜🎜# 속성은 포함되지 않습니다(참조 아래 기능으로). #🎜🎜##🎜🎜##🎜🎜#객체
#🎜🎜#isGranted
#🎜🎜##🎜🎜# 메서드의 개체입니다(있는 경우). #🎜🎜##🎜🎜##🎜🎜#토큰
#🎜🎜#trust_resolver
#🎜🎜#AuthenticationTrustResolverInterface
#🎜🎜## 🎜🎜#Interface, 해당 개체는 다음과 같습니다. 대신 다음 #🎜🎜##🎜🎜#is_*
#🎜🎜##🎜🎜# 함수를 사용하고 싶을 수도 있습니다. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜# 또한 표현식에서 다양한 기능에 액세스할 수 있습니다. #🎜🎜##🎜🎜## 🎜🎜#is_authenticated
is_authenticated
true
,如果用户通过“记住我”或“完全”身份认证通过的话 - 比如,如果用户已登录,就返回true。is_anonymous
isGranted
函数中使用IS_AUTHENTICATED_ANONYMOUSLY
。is_remember_me
IS_AUTHENTICATED_REMEMBERED
,见下文。is_fully_authenticated
IS_AUTHENTICATED_FULLY
,见下文。has_role
'ROLE_ADMIN' in roles
。is_remember_me
🎜🎜 함수의 동작과 달리 🎜🎜🎜🎜 🎜만약 🎜🎜🎜🎜🎜사용자가 Remember_me 쿠키 인증을 통과하고 🎜🎜is_full_authenticated
인 경우 true를 반환합니다. 🎜🎜🎜 🎜🎜🎜🎜🎜 사용자가 세션 기간 내에 있는 경우에만(예: 전체 공급 ) True는 로그인 상태가 성공한 경우에만 반환됩니다. 🎜🎜🎜🎜🎜🎜🎜