Cara menggunakan ungkapan dalam keselamatan, penghalaan, perkhidmatan dan pengesahan
Symfony datang dengan bahasa ekspresi yang berkuasa #🎜🎜🎜##🎜 komponen Ia membolehkan anda menambah logik tersuai lanjutan pada konfigurasi anda. Rangka kerja Symfony menggunakan ungkapan yang baik dalam: ###### 🎜🎜 ## 🎜🎜 ## ## 🎜🎜 ## ## 🎜🎜 #Perkhidmatan konfigurasi#🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜#; 🎜#Keadaan padan laluan
#🎜🎜 #; di bawah) dan
- Gunakan allow_if untuk kawalan akses
- # ###### 🎜🎜#;#🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜# 🎜🎜##🎜##🎜🎜🎜🎜🎜🎜 Create³³Untuk mendapatkan maklumat lanjut tentang penggunaan klausa adverba: ungkapan, sila rujuk #🎜🎜🎜🎜 🎜🎜#Sintaks ungkapan
- #🎜🎜🎜 Security: Gunakan ungkapan kompleks untuk kawalan akses #🎜🎜🎜🎜 . Selain peranan ini,
diberikan
juga . TerimaExpression
Objek:use Symfony\Component\ExpressionLanguage\Expression;// ... public function indexAction(){ $this->denyAccessUnlessGranted(new Expression( '"ROLE_ADMIN" in roles or (user and user.isSuperAdmin())' )); // ...}
Dalam contoh ini, jika pengguna semasa mempunyai
ROLE_ADMIN
ROLE_ADMIN
或者当前的用户对象的isSuperAdmin()
方法返回true
那么访问将被授权(注意:你的用户对象未必拥有isSuperAdmin
方法,这个方法只为此例出现)。这就用到了一个表达式,你还可以学习更多关于表达languange的语法,参考表达式语法。
在表达式中,你可以访问以各种变量:
user
- 用户对象(或者是
anon
,如果未经认证的话)。 roles
- 用户所拥有的角色数组,包括角色层级(角色层级)但是不包括
IS_AUTHENTICATED_*
属性(参考下面的功能)。 object
- 第二作为个参数传到
isGranted
方法的对象(如果有的话)。 token
- 令牌对象。
trust_resolver
AuthenticationTrustResolverInterface
接口,其对象是:可能你希望使用下面的is_*
atau objek pengguna semasaisSuperAdmin() kod>
kaedah mengembalikan
🎜 kaedah, kaedah ini hanya muncul untuk contoh ini). 🎜🎜true
maka akses akan dibenarkan (nota: objek pengguna anda mungkin tidak mempunyaiisSuperAdmin kod>
🎜🎜🎜🎜Ini menggunakan ungkapan Anda juga boleh mengetahui lebih lanjut tentang sintaks menyatakan bahasa, rujuk 🎜🎜🎜🎜sintaks ungkapan🎜🎜🎜🎜. 🎜🎜🎜🎜🎜🎜Dalam ungkapan, anda boleh mengakses pelbagai pembolehubah: 🎜🎜🎜pengguna
🎜- 🎜🎜Objek pengguna (atau 🎜🎜
anon
🎜🎜 jika tidak disahkan). 🎜🎜🎜 peranan
🎜- 🎜🎜Susunan peranan yang dimiliki oleh pengguna, termasuk 🎜🎜🎜🎜Tahap peranan🎜🎜🎜🎜 (peringkat peranan) tetapi tidak termasuk atribut 🎜🎜
IS_AUTHENTICATED_*
🎜🎜 (rujuk fungsi di bawah ). 🎜🎜🎜 objek
🎜- 🎜🎜Parameter kedua diserahkan kepada kaedah 🎜🎜
isGranted
🎜🎜 objek (jika ada). 🎜🎜🎜 token
🎜- 🎜🎜Token objek. 🎜🎜🎜
trust_resolver
🎜AuthenticationTrustrusTraverInterface Sebaliknya, < code class="notranslate">is_*
🎜🎜. 🎜🎜🎜🎜🎜🎜🎜 Selain itu, anda boleh mengakses pelbagai fungsi dalam ungkapan: 🎜🎜🎜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 - 等同于一个这样的表达式
'ROLE_ADMIN' in roles
。
is_remember_me🎜🎜🎜 fungsi 🎜🎜 🎜Hanya jika . ) Benar hanya akan dikembalikan jika status log masuk berjaya. 🎜🎜🎜🎜🎜🎜🎜