Rumah > pembangunan bahagian belakang > tutorial php > Pengesahan lebih mudah dengan pengawal dalam Symfony 3

Pengesahan lebih mudah dengan pengawal dalam Symfony 3

Christopher Nolan
Lepaskan: 2025-02-16 11:27:09
asal
1041 orang telah melayarinya

Komponen Pengawal Symfony: Menyelaraskan Pengesahan Custom

Symfony 2.8 dan 3 memperkenalkan komponen pengawal, dengan ketara memudahkan penciptaan pengesahan tersuai. Mengintegrasikan dengan lancar dengan sistem keselamatan Symfony, Pengawal menawarkan antara muka bersatu yang menguruskan keseluruhan rantaian pengesahan. Ini membolehkan penyesuaian proses pengesahan yang luas, merangkumi penyerahan borang, pengesahan kelayakan, dan mengendalikan kedua -dua percubaan pengesahan yang berjaya dan gagal. Kesesuaiannya meliputi pelbagai jenis pengesahan, termasuk bentuk, berasaskan token, media sosial, dan pengesahan API, dan menyokong fungsi "ingat saya" dan kawalan akses berasaskan peranan. Yang penting, pengawal meningkatkan, tidak menggantikan, mekanisme keselamatan simfoni sedia ada; Kaedah seperti form_login kekal berfungsi.

Easier Authentication with Guard in Symfony 3

Artikel ini menunjukkan pengesahan bentuk asas yang memerlukan akses

. Walaupun pengesahan bentuk tradisional tetap berdaya maju, pendekatan yang diselaraskan oleh penjaga ditonjolkan. Prinsip yang sama berlaku untuk kaedah pengesahan lain. Aplikasi simfoni sampel menggunakan pengesahan pengawal boleh didapati melalui [repositori ini] (LINK_TO_REPOSITORY_HERE - Gantikan dengan pautan sebenar jika tersedia). ROLE_ADMIN

Konfigurasi Keselamatan

Konfigurasi keselamatan berfungsi memerlukan kelas pengguna (mewakili data pengguna) dan pengguna userprovider (mengambil data pengguna). Untuk kesederhanaan, kami akan menggunakan pembekal pengguna inMemory dengan kelas pengguna lalai Symfony. Fail

bermula seperti berikut: security.yml

security:
    providers:
        in_memory:
            memory:
                users:
                    admin:
                        password: admin
                        roles: 'ROLE_ADMIN'
Salin selepas log masuk
(rujuk laman web Symfony untuk butiran komprehensif mengenai fail

.) security.yml

Firewall ditakrifkan di bawah kekunci

: firewalls

        secured_area:
            anonymous: ~
            logout:
                path:   /logout
                target: /
            guard:
                authenticators:
                    - form_authenticator
Salin selepas log masuk
Ini membolehkan akses tanpa nama dan menentukan

sebagai laluan logout. Kunci /logout menunjuk guard (nama perkhidmatan kami) sebagai pengesahan. form_authenticator

Peraturan akses ditentukan:

    access_control:
            - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
            - { path: ^/, roles: ROLE_ADMIN }
Salin selepas log masuk
hanya pengguna yang tidak disahkan boleh mengakses

; Semua jalan lain memerlukan /login. ROLE_ADMIN

Pengawal Login

Borang log masuk dan pengawal ditakrifkan dalam

: DefaultController

  /**
   * @Route("/login", name="login")
   */
  public function loginAction(Request $request)
  {
    // ... (Existing code to handle user and authentication error) ...
  }
Salin selepas log masuk
Tindakan ini memaparkan borang log masuk asas (diberikan oleh templat ranting).

Perkhidmatan Pengawas Pengawal

Perkhidmatan

ditakrifkan dalam form_authenticator: services.yml

services:
    form_authenticator:
          class: AppBundle\Security\FormAuthenticator
          arguments: ["@router"]
Salin selepas log masuk
kelas

(terperinci di bawah) meluas FormAuthenticator: AbstractGuardAuthenticator

namespace AppBundle\Security;

// ... (Import statements) ...

class FormAuthenticator extends AbstractGuardAuthenticator
{
    // ... (Methods: getCredentials, getUser, checkCredentials, onAuthenticationSuccess, onAuthenticationFailure, start, supportsRememberMe) ...
}
Salin selepas log masuk
Kelas ini melaksanakan saluran pengesahan pengawal:

  • getCredentials(): Ekstrak kelayakan dari permintaan pos ke /login.
  • getUser(): mengambil pengguna berdasarkan nama pengguna.
  • checkCredentials(): Mengesahkan kata laluan terhadap kata laluan yang disimpan.
  • onAuthenticationSuccess(): mengalihkan ke laman utama pada log masuk yang berjaya.
  • onAuthenticationFailure(): Redirects kembali ke halaman log masuk dengan mesej ralat.
  • start(): Redirects ke halaman log masuk apabila pengesahan diperlukan.
  • supportsRememberMe(): Menunjukkan sama ada fungsi "ingat saya" disokong.

Kesimpulan

Ini menunjukkan sistem log masuk berfungsi menggunakan komponen pengawal. Pelbagai pengesahan boleh wujud bersama, yang memerlukan spesifikasi titik masuk. Pelengkap pengawal, tidak menggantikan, ciri keselamatan Symfony yang ada.

Soalan Lazim (Soalan Lazim)

Seksyen FAQ yang disediakan menawarkan penjelasan terperinci mengenai pelbagai aspek pengesahan pengawal, termasuk perbezaannya dari kaedah lain, pilihan penyesuaian, pengendalian peranan, pengekodan kata laluan, dan penggunaannya dengan pangkalan data dan pengesahan sosial. Jawapan ini komprehensif dan menangani kebimbangan umum.

Atas ialah kandungan terperinci Pengesahan lebih mudah dengan pengawal dalam Symfony 3. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan