របៀបនៃការប្រើប្រាស់ Expressions នៅក្នុង Security, Routing, Services ហើយនិង Validation
នៅក្នុងជំពូកនេះ យើងនឹងសូមណែនាំអ្នកអំពីការប្រើប្រាស់ Expression នៅក្នុង Security, Routing, Services ហើយនិង Validation នៃ Symfony។ Symfony បានភ្ជាប់មកជាមួយនឹង ExpressionLanguage component ដ៏ពេញនិយម។ វាអាចអោយអ្នកធ្វើការ customize logic នៅខាងក្នុងconfiguration បានផងដែរ។
Symfony Framework ប្រើប្រាស់ឥទ្ធិពល expression បញ្ចេញមកក្រៅតាមរយៈ៖
ទី១ ធ្វើការ configure services
ទី២ ផ្គូរផ្គងលក្ខខណ្ឌ Route
ទី៣ ធ្វើការពិនិត្យលើ security និង access controls ជាមួយនឹង allow_if
ទី៤ Validation
សម្រាប់ព័ត៌មានបន្ថែមអំពីរបៀបនៃការបង្កើតនិងធ្វើការជាមួយ expression សូមមើលទៅតាម Expression Syntax
១) Security: Access Controls ដែលស្មុគស្មាញជាមួយ Expression
ក្នុងការបន្ថែម role ដូចជា ROLE_ADMIN, isGranted() method ក៏អាចទទួលយកនូវ Expression object បានផងដែរ៖
ក្នុងឧទាហរណ៏នេះ ប្រសិនបើ user មាន ROLE_ADMIN រឺក៏ current user object’s isSuperAdmin() method បញ្ជូនមកជា true បន្ទាប់មក access អាចនឹងកាន់តែធំ។
នេះគឺជាការប្រើ expression ហើយអ្នកអាចរៀនបន្ថែមទៀតអំពី expression language syntax តាមរយៈExpression Syntax។
នៅខាងក្នុង expression អ្នកបាន access ទៅកាន់ចំនួននៃ variable៖
user ៖ user object (រឺជា string anon ប្រសិនបើអ្នកមិនមែនជា authenticated)
roles ៖ array នៃ roles ដែល user មាន រួមបញ្ចូលពី role hierarchy តែមិនមែនរួមបញ្ចូលនូវ IS_AUTHENTICATED_* attributes
object ៖ object ដែលដាក់នៅជា argument ទី២ ទៅកាន់ isGranted()
token ៖ ជា token object
trust_resolver ៖ AuthenticationTrustResolverInterface ជា object ដែលអ្នកនឹងប្រហែលជាប្រើ is_*() funtions ខាងក្រោមជំនួស។
បន្ថែមពីនេះផងដែរ អ្នកអាច access ទៅកាន់តួលេខនៃ function ដែលនៅខាងក្នុង expression៖
is_authenticated៖ បញ្ជូនត្រលប់មកវិញនូវ true ប្រសិនបើ user គឺជា authenticated តាមរយៈ “remember-me” រឺក៏ authenticated “fully” – i.e បញ្ជូនត្រលប់មកវិញនូវ true ប្រសិនបើ user ជា “logged in”។
is_anonymous៖ ស្មើរនឹងការប្រើប្រាស់ IS_AUTHENTICATED_ANONYMOUSLY ជាមួយ isGranted() function។
is_remember_me៖ ប្រហែល តែមិនស្មើរនឹង IS_AUTHENTICATED_REMEMBER
is_fully_authenticated៖ ប្រហែលនឹង តែមិនស្មើរនឹង IS_AUTHENTICATED_FULLY ទេ
has_role៖ ពិនិត្យមើលថាប្រសិនបើ user បានអោយ role – equivalent ទៅ expression ដូចជា ‘ROLE_ADMIN’ in roles។