Tembok api berbilang meningkatkan keselamatan dalam Symfony 5.4
P粉952365143
P粉952365143 2023-08-26 16:14:30
0
1
525
<p>Saya cuba mengasingkan pengesahan pengguna daripada pengesahan pentadbir. </p> <p>Jadi saya mencipta 2 tembok api dan 2 kawalan akses berbeza. </p> <p>Fail security.yaml saya adalah seperti berikut:</p> <pre class="brush:php;toolbar:false;">enable_authenticator_manager: true password_hashers: SymfonyComponentSecurityCoreUserPasswordAuthenticatedUserInterface: 'auto' pembekal: owner_authentication: entiti: kelas: AppEntityMerchantOwner harta: emailAddress pengesahan_pengguna: entiti: kelas:AppEntityUserUser harta: emailAddress tembok api: dev: corak: ^/(_(profiler|wdt)|css|imej|js)/ keselamatan: palsu pengguna: malas: betul corak: ^/admin/login/ pembekal: pengesahan_pengguna user_checker: AppSecurityAuthentificableModelChecker borang_log masuk: pembekal: pengesahan_pengguna default_target_path: app.dashboard.index use_referer: benar use_forward: palsu laluan_log masuk: app.authorization.admin_login check_path: app.authorization.admin_login nama pengguna_parameter: log masuk[emailAddress] kata laluan_parameter: log masuk[kata laluan] log keluar: laluan: app.authorization.logout sasaran: app.authorization.admin_login utama: malas: betul corak: ^/ pembekal: owner_authentication user_checker: AppSecurityAuthentificableModelChecker borang_log masuk: pembekal: owner_authentication default_target_path: app.dashboard.index use_referer: benar use_forward: palsu login_path: app.authorization.login check_path: app.authorization.login nama pengguna_parameter: log masuk[emailAddress] kata laluan_parameter: log masuk[kata laluan] log keluar: laluan: app.authorization.logout sasaran: app.authorization.login access_control: - { laluan: ^/admin/log masuk, peranan: PUBLIC_ACCESS} - { laluan: ^/log masuk, peranan: PUBLIC_ACCESS } - { laluan: ^/, peranan: ROLE_USER }</pre> <p>Semuanya berfungsi dengan baik pada tembok api utama, tetapi apabila saya menggunakan butang hantar tembok api pengguna (pentadbir), halaman log masuk menyegarkan dirinya sendiri dan kemudian tiada apa yang berlaku. Saya tidak mendapat sebarang kesilapan. </p> <p>** Jika saya menambah log masuk pengguna (admin) pada tembok api utama, maka /admin/login berfungsi dengan baik dan yang satu lagi tidak lagi berfungsi. </p> <p>Apabila saya memanggil <code>$authenticationUtils->getLastAuthenticationError()</code>, saya tidak mendapat sebarang ralat. Tetapi pengesahan juga tidak berfungsi.</p> <p>Beginilah rupa pengawal saya:</p> <pre class="brush:php;toolbar:false;">public function adminLogin(AuthenticationUtils $authenticationUtils): Respons { if ($this->getUser()) { kembalikan $this->redirectToRoute('app.dashboard.index'); } $loginForm = $this->createForm(LoginType::class, ['emailAddress' => $authenticationUtils->getLastUsername()]); kembalikan $this->renderForm('app/pages/authorization/admin_login.html.twig', [ 'title' => 'Log masuk', 'login_form' => 'error' => $authenticationUtils->getLastAuthenticationError()?->getMessageKey(), ]); }</pre> <p>Ini adalah masalah yang sama yang dialami seseorang: https://grafikart.fr/forum/35234, tetapi saya tidak menemui sebarang penyelesaian. </p>
P粉952365143
P粉952365143

membalas semua(1)
P粉041881924

Akhirnya, saya menemui jawapannya dan saya akan menyiarkannya di sini: https://stackoverflow.com/a/42352112/8003007 Apa yang perlu saya lakukan ialah menambah satu context: my_context pada kedua-dua tembok api.

Ini adalah pilihan yang sukar dikenal pasti kerana ia tidak muncul dalam dokumentasi Symfony rasmi dan semasa, hanya dalam versi terdahulu, seperti Symfony 3.4.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!