Rumah  >  Artikel  >  rangka kerja php  >  Apa itu guard dalam laravel

Apa itu guard dalam laravel

WBOY
WBOYasal
2022-06-02 17:54:253577semak imbas

Dalam laravel, guard ialah pemalam untuk pengesahan pengguna, peranan pengawal adalah untuk memproses pengesahan dan menilai setiap permintaan, membaca data daripada pangkalan data dan membandingkannya dengan input pengguna, dan menentukan sama ada panggilan itu mempunyai telah dilog masuk atau dibenarkan untuk lulus , dan Guard boleh membina sistem pensijilannya sendiri dengan sangat fleksibel.

Apa itu guard dalam laravel

Persekitaran pengendalian artikel ini: sistem Windows 10, Laravel versi 5.4, komputer Dell G3.

guard in laravel

Malah, anda boleh memahaminya sebagai Guard atau Provide. Pemalam untuk fungsi tertentu.

Peranan beliau adalah untuk memproses pengesahan untuk menentukan sama ada setiap permintaan atau panggilan telah dilog masuk atau dibenarkan untuk lulus

Apakah Pengawal

Dalam rangka kerja Laravel/Lumen, pengesahan log masuk/pendaftaran pengguna pada asasnya telah dirangkumkan dan boleh digunakan di luar kotak. Teras pengesahan log masuk/pendaftaran ialah:

Menyimpan maklumat pendaftaran pengguna ke dalam pangkalan data (pendaftaran)

Membaca data daripada pangkalan data dan membandingkannya dengan input pengguna (pengesahan)

Dua langkah di atas adalah asas log masuk/pendaftaran Anda boleh melihat bahawa ia akan melibatkan operasi pangkalan data jadual untuk pengesahan pengguna bukan jadual pengguna tetapi jadual pengguna admin_user, medan pengesahan ialah telefon dan bukannya e-mel, dan isu lain yang perlu diselesaikan oleh Pengawal, anda boleh menentukan jadual dan medan data yang hendak digunakan, dsb. Pengawal boleh membina sistem pengesahan anda sendiri dengan sangat fleksibel.

Dalam istilah orang awam, ini adalah: Pengawal adalah seperti penjaga pintu sebuah komuniti, kejam dan tidak mengenali orang tetapi hanya maklumat pendaftaran.

Sebelum masuk komuniti, pakcik perlu semak identiti anda Jika pengesahan gagal, pakcik tidak akan membenarkan anda masuk.

Jika anda berjalan/berbasikal masuk, Pakcik 1 perlu menyemak kad akses anda dia mengeluarkan buku yang merekodkan maklumat kad akses semua pemilik dalam komuniti untuk melihat sama ada maklumat kad akses anda ada dalam ini. buku;

Jika anda memandu masuk, Pakcik 2 akan menyemak nombor plat anda dari buku yang merekodkan nombor plat semua pemilik Oleh itu, apabila pemilik baru berpindah ke komuniti, dia perlu memaklumkan kepada pakcik penjaga pintu maklumat kad akses atau nombor plat anda Jika tidak, Pakcik 2 tidak akan membenarkan anda masuk.

Jika pengurus hartanah ingin memasuki komuniti, pakcik penjaga pintu 3 hanya akan mengenali maklumat pendaftaran pengurus akan menunjukkan kad akses pengurusnya, dan pakcik penjaga pintu akan menyemak buku yang merekodkan kad akses pengurus maklumat.

Di atas sepadan dengan pengesahan berbilang pengguna dalam rangka kerja:

Orang berjalan/berbasikal-> Kad akses

Orang memandu-> >

Pengurus Harta-> Kad Akses

Kad akses dan nombor plat adalah kaedah pengesahan yang berbeza, dan buku yang dilihat oleh pakcik pengawal sepadan dengan maklumat pengguna dalam pangkalan data yang berbeza, Isn lebih mudah untuk difahami.

Lumen/Laravel menyediakan pengesahan yang sangat fleksibel dalam bentuk middleware, dan pengesahan berbilang boleh ditukar melalui konfigurasi mudah.

Rajah aliran kerja adalah seperti berikut:


Apa itu guard dalam laravel

Seperti yang anda boleh lihat daripada gambar, Pengawal melibatkan tiga bahagian, iaitu:

  • Pelaksanaan pengawal itu sendiri

  • Pembekal pengguna Pembekal Pengguna, menyatakan jadual data yang diperoleh dengan cara bagaimana (faham/pangkalan data)

  • Antara muka Boleh Sahih menentukan perkara yang boleh disahkan, iaitu antara muka yang melaksanakannya

Pengetahuan lanjutan: <.>Penjaga, pemahaman saya ialah ia sepatutnya serupa dengan pengesahan pengguna.

Terdapat parameter untuk mengkonfigurasi pengawal dalam config/auth.php dapat dilihat bahawa web dan api ialah dua pengawal.

Dalam perniagaan harian, API mungkin lebih kepada operasi pengguna hadapan, manakala web lebih kepada operasi pengguna belakang.

Konfigurasi lalai menghala kepada pembekal pengguna.

Seterusnya mari kita lihat konfigurasi pembekal.
/*
    | Authentication Guards
    |认证关卡
    | Next, you may define every authentication guard for your application. Of course, a great default configuration has been defined for you here which uses session storage and the Eloquent user provider.
    |接下来,你可能要为你的应用定义每个认证关卡。当然,已经为你定一了一个很不错的默认配置。这里会使用会话储存和用户模型
    | All authentication drivers have a user provider. This defines how the users are actually retrieved out of your database or other storage mechanisms used by this application to persist your user&#39;s data.
    |所有的认证驱动都有一个用户提供者。这里定义了怎么实际上怎么从你的数据库或者其他储存机制中取出用户。以便应用开保持你的用户数据
    | Supported: "session", "token"
    |可选驱动:"session", "token"
    */
&#39;guards&#39; => [
        &#39;web&#39; => [
            &#39;driver&#39; => &#39;session&#39;,
            &#39;provider&#39; => &#39;users&#39;,
        ],
        &#39;api&#39; => [
            &#39;driver&#39; => &#39;token&#39;,
            &#39;provider&#39; => &#39;users&#39;,
        ],
    ],

Dalam pembekal, adakah anda mempunyai konfigurasi pengguna yang baru anda lihat Ini adalah kumpulan pengguna untuk mengkonfigurasi laravel, kerana dalam keadaan biasa, pengguna bahagian hadapan dan bahagian belakang beroperasi secara berasingan. Jadi anda boleh membuat kumpulan pengguna pentadbir baharu di sini dan mengkonfigurasinya. Di luar kotak, hanya pengguna digunakan secara lalai.
  /*
    | User Providers
    |用户提供者
    | If you have multiple user tables or models you may configure multiple sources which represent each model / table. These sources may then be assigned to any extra authentication guards you have defined.
    | 如果你有多个用户表或用户模型,你可以配置多个代表用户表或模型的资源。这些资源可能被分配给应用中你定义的其他认证关卡
    | Supported: "database", "eloquent"
    |
    */
 &#39;providers&#39; => [
        &#39;users&#39; => [
            &#39;driver&#39; => &#39;eloquent&#39;,
            &#39;model&#39; => App\User::class,
        ],
        // &#39;users&#39; => [
        //     &#39;driver&#39; => &#39;database&#39;,
        //     &#39;table&#39; => &#39;users&#39;,
        // ],
    ],

Sehubungan itu, operasi kata laluan untuk setiap kumpulan pengguna harus berbeza, jadi terdapat juga konfigurasi kata laluan di sini.

Kami biasanya menggunakan Auth::check() untuk mengesan pengguna log masuk atau sama ada pengguna log masuk. Ini kerana apabila menggunakan konfigurasi lalai, guard dikonfigurasikan secara automatik sebagai kumpulan pengguna pengguna.
  /*
    | Resetting Passwords
    | 密码重置
    | You may specify multiple password reset configurations if you have more than one user table or model in the application and you want to have separate password reset settings based on the specific user types.
    | 如果你有多个用户模型或表,并且想对不同用户类型有特定的密码重置,则可以配置多个特定的重置密码
    | The expire time is the number of minutes that the reset token should be considered valid. This security feature keeps tokens short-lived so they have less time to be guessed. You may change this as needed.
    |这个获取时间是令牌过期的分钟数,这个安全措施可以保证令牌保持段时间有效,因此有更少的时间被破解。你可以按照需要更改。
    */
    &#39;passwords&#39; => [
        &#39;users&#39; => [
            &#39;provider&#39; => &#39;users&#39;,
            &#39;table&#39; => &#39;password_resets&#39;,
            &#39;expire&#39; => 60,
        ],
    ],

Pengawal web menunjuk ke model pengguna.
  /*
    | Authentication Defaults
    | 默认认证配置
    | This option controls the default authentication "guard" and password reset options for your application. You may change these defaults as required, but they&#39;re a perfect start for most applications.
    | 这个就是应用的默认认证关卡个重置密码,你可以按自己要求更改。但这是最适合一个新应用的配置
    */
    &#39;defaults&#39; => [
        &#39;guard&#39; => &#39;web&#39;,
        &#39;passwords&#39; => &#39;users&#39;,
    ],

Tetapi bagaimana untuk mengesahkan apabila kami mempunyai dua kumpulan pengguna, depan dan belakang?

Auth::check() ialah kaedah untuk menentukan sama ada pengguna dilog masuk. Jika sistem pengguna lalai digunakan, maka tiada masalah untuk menggunakannya dengan cara ini.

Tetapi jika anda menggunakan dua kumpulan pengguna, anda harus melakukan ini:

Auth::guard('api')->check() digunakan untuk menentukan sama ada front-end pengguna dilog masuk ke Auth:: guard('web')->check() digunakan untuk menentukan sama ada pengguna latar belakang dilog masuk

Jadi jika anda menggunakan kumpulan pengguna bukan lalai, anda perlu menentukannya dengan pengawal.

Jadi, yang biasa kami gunakan sebenarnya ialah konfigurasi lalai Untuk menulis semuanya, ia mestilah Auth::guard('web)->check()

[Cadangan berkaitan: <.>Tutorial video laravel

Atas ialah kandungan terperinci Apa itu guard dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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