Di template Symfony 2 (menggunakan Twig), bagaimana saya bisa secara efektif memeriksa apakah pengguna tidak login?
Saya tidak ingin menggunakan ROLE
cek. Saya ingin cara langsung untuk memeriksa apakah pengguna belum masuk.
Saya sadar bahwa membandingkan app.user.username
dengan anon
karya, tetapi itu terasa tidak tepat bagi saya.
{% if not app.user %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
sebagai gantinya. Lihat dokumen Symfony2 : symfony.com/doc/current/book/… . Juga tersedia untuk Silex: silex.sensiolabs.org/doc/providers/…{% if is_granted('IS_AUTHENTICATED_FULLY') %}
hanya akan mengembalikan nilai true jika pengguna telah mengautentikasi dalam sesi saat ini. Ini akan mengembalikan false jika pengguna mengautentikasi melalui cookie ingat saya. Penggunaannya{% if app.user %}
benar, jika seseorang ingin mengembalikan nilai true terlepas dari kapan pengguna mengautentikasi.{% if app.security.token is null or app.security.token.user == 'anon.' %}
begitulah cara saya membuatnya bekerja untuk sayaMeskipun jawaban saat ini menjawab pertanyaan OP, saya ingin menambahkan lebih detail.
Saya memahami OP tidak ingin memeriksa peran, tetapi saya memasukkannya sehingga pengguna SO lain dapat menyalin dan menempelkannya di masa mendatang. - setiap kali saya google ini, saya berakhir di sini!
Sumber Doc Symfony:
Periksa apakah ada pengguna yang masuk (terlepas dari perannya)
Seperti yang dijawab, Anda dapat menggunakan
app.user
untuk memeriksa apakah ada pengguna yang masuk.Memeriksa status otentikasi
Anda dapat menggunakan
is_granted()
metode ini untuk memeriksaROLES
, (Di bawah ini adalah semua peran yang diberikan oleh symfony, Anda juga dapat memiliki peran Anda sendiri (selengkapnya di bawah) )dari dokumen:
Memeriksa Peran
Anda juga dapat menggunakan
is_granted()
untuk memeriksa peran.Dengan asumsi kita memiliki 3 peran (
ROLE_SUPER_ADMIN
,ROLE_ADMIN
, &ROLE_USER
)Melakukan hal di atas di dalam pengontrol
Lihat jawaban berikut: Bagaimana cara memeriksa apakah pengguna login di Symfony2 di dalam pengontrol?
sumber
-%}
dan{%-
kepanjangannya? kenapa tidak%}
dan{%
?-
menghapus semua Trailing spasi sehingga lebih mudah dibaca dalam source browser. Info lebih lanjut di sini: twig.sensiolabs.org/doc/templates.html#whitespace-controlapp.user
, berjalan seperti ituThe value stored in this variable can be a UserInterface object, any other object which implements a __toString() method or even a regular string.
. Saya tidak ingat di mana saya membaca bahwa app.user mengembalikan "segera." string sayangnya dan dalam keadaan apa.The representation of the current user or null if there is none.
, jadi ini akan menjadi null. Paket pihak ketiga dapat mengembalikan string jikaUserInterface
penerapan khususnya memiliki__toString()
metode yang dipanggil saat anonim.