pTokens launch on mainnet!

Following a successful series of testnet launches, we’re officially migrating pTokens to the mainnet. pBTC is hitting the Ethereum blockchain to unlock cross-chain liquidity and begin our journey…

Smartphone

独家优惠奖金 100% 高达 1 BTC + 180 免费旋转




Laravel Auth

A. Introduction

Laravel membuat penerapan otentikasi sangat sederhana. Bahkan, hampir semuanya dikonfigurasi untuk Anda di luar kotak. File konfigurasi otentikasi terletak di config / auth.php, yang berisi beberapa opsi yang terdokumentasi dengan baik untuk mengubah perilaku layanan otentikasi.

Pada intinya, fasilitas otentikasi Laravel terdiri dari “penjaga” dan “penyedia”. Penjaga menentukan bagaimana pengguna diautentikasi untuk setiap permintaan. Misalnya, Laravel mengirimkan penjaga sesi yang mempertahankan status menggunakan penyimpanan sesi dan cookie.

Penyedia menentukan bagaimana pengguna diambil dari penyimpanan persisten Anda. Laravel dikirimkan dengan dukungan untuk mengambil pengguna menggunakan Eloquent dan pembuat kueri basis data. Namun, Anda bebas menentukan penyedia tambahan yang diperlukan untuk aplikasi Anda.

Database Consideration

Secara default Laravel menyertakan model App \ User Eloquent di direktori aplikasi. Model ini dapat digunakan dengan driver otentikasi Eloquent default, jika tidak menggunakan Eloquent pada aplikasi maka dapat menggunakan pengandar otentikasi basis data yang menggunakan pembuat kueri Laravel.

B. Authentication Quickstart

Laravel dikirimkan bersama beberapa pengontrol otentikasi yang dibuat sebelumnya, yang terletak di App \ Http \ Controllers \ Auth namespace. RegisterController menangani pendaftaran pengguna baru, LoginController menangani otentikasi, ForgotPasswordController menangani tautan e-mail untuk mengatur ulang kata sandi, dan ResetPasswordController berisi logika untuk mengatur ulang kata sandi. Masing-masing pengendali ini menggunakan sifat untuk memasukkan metode yang diperlukan. Untuk banyak aplikasi, Anda tidak perlu memodifikasi pengontrol ini sama sekali.

Routing

Paket laravel / ui Laravel menyediakan cara cepat untuk merancah semua rute dan tampilan yang Anda perlukan untuk otentikasi menggunakan beberapa perintah sederhana:

composer require laravel/ui

php artisan ui vue –auth

Perintah ini harus digunakan pada aplikasi baru dan akan menginstal tampilan tata letak, registrasi dan tampilan login, serta rute untuk semua titik akhir otentikasi. HomeController juga akan dibuat untuk menangani permintaan pasca-masuk ke dasbor aplikasi

Retrieving The Authenticated User

Jika Anda memulai aplikasi baru dan ingin memasukkan perancah otentikasi, Anda dapat menggunakan arahan — auth saat membuat aplikasi Anda. Perintah ini akan membuat aplikasi baru dengan semua perancah otentikasi dikompilasi dan diinstal:

laravel new blog --auth

Views

Seperti disebutkan di bagian sebelumnya, perintah php artisan ui vue — auth paket laravel / ui akan membuat semua tampilan yang Anda perlukan untuk otentikasi dan menempatkannya di direktori resources / views / auth.

Perintah ui juga akan membuat direktori sumber daya / tampilan / tata letak yang berisi tata letak dasar untuk aplikasi Anda. Semua tampilan ini menggunakan kerangka Bootstrap CSS, tetapi Anda bebas untuk menyesuaikannya sesuka Anda.

Authenticating

Setelah memiliki pengaturan rute dan tampilan untuk pengontrol otentikasi yang disertakan, maka siap mendaftar dan mengautentikasi pengguna baru untuk aplikasi. Lalu dapat mengakses aplikasi di browser karena pengontrol otentikasi sudah mengandung logika (melalui sifat mereka) untuk mengotentikasi pengguna yang ada dan menyimpan pengguna baru dalam database.

Custom Route

Ketika seorang pengguna berhasil diautentikasi, mereka akan dialihkan ke / home URI. Dengan ini dapat mengkustomisasi jalur pengalihan pasca-otentikasi menggunakan konstanta HOME yang ditentukan di RouteServiceProvider.

ð public const HOME = ‘/home’;

Jika membutuhkan penyesuaian respons lebih kuat yang dikembalikan ketika pengguna diautentikasi, Laravel menyediakan metode otentikasi (Permintaan $ permintaan, $ pengguna) kosong yang dapat ditimpa jika diinginkan.

Username Customization

Secara default, Laravel menggunakan bidang email untuk otentikasi. Jika Anda ingin menyesuaikan ini, Anda dapat menentukan metode nama pengguna pada LoginController Anda:

public function username()

{

return ‘username’;

}

Guard Customization

Anda juga dapat menyesuaikan “penjaga” yang digunakan untuk mengautentikasi dan mendaftarkan pengguna. Untuk memulai, tentukan metode penjaga di LoginController, RegisterController, dan ResetPasswordController Anda. Metode harus mengembalikan instance penjaga:

use Illuminate\Support\Facades\Auth;

protected function guard()

{

return Auth::guard(‘guard-name’);

}

Validation / Storage Customization

Untuk mengubah bidang formulir yang diperlukan ketika pengguna baru mendaftar dengan aplikasi Anda, atau untuk menyesuaikan bagaimana pengguna baru disimpan ke dalam database Anda, Anda dapat memodifikasi kelas RegisterController. Kelas ini bertanggung jawab untuk memvalidasi dan membuat pengguna baru aplikasi Anda.

Metode validator dari RegisterController berisi aturan validasi untuk pengguna baru aplikasi. Anda bebas mengubah metode ini sesuai keinginan.

Metode membuat RegisterController bertanggung jawab untuk membuat catatan App \ Pengguna baru dalam database Anda menggunakan Eloquent ORM. Anda bebas memodifikasi metode ini sesuai dengan kebutuhan basis data Anda.

C. Retrieving The Authenticated User

Anda dapat mengakses pengguna terautentikasi melalui fasad Auth:

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user…

$user = Auth::user();

// Get the currently authenticated user’s ID…

$id = Auth::id();

Atau, setelah pengguna diautentikasi, Anda dapat mengakses pengguna yang diautentikasi melalui instance Illuminate \ Http \ Request. Ingat, kelas type-hinted akan secara otomatis disuntikkan ke dalam metode controller Anda:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

{

/**

* Update the user’s profile.

*

* @param Request $request

* @return Response

*/

public function update(Request $request)

{

// $request->user() returns an instance of the authenticated user…

}

}

Determining If The Current User Is Authenticated

Untuk menentukan apakah pengguna sudah masuk ke aplikasi Anda, Anda dapat menggunakan metode pemeriksaan pada fasad Auth, yang akan mengembalikan true jika pengguna dikonfirmasi:

use Illuminate\Support\Facades\Auth;

if (Auth::check()) {

// The user is logged in…

}

D. Protecting Routing

Route middleware hanya dapat digunakan untuk mengizinkan pengguna terotentikasi untuk mengakses rute yang diberikan. Laravel dikirimkan bersama middleware auth, yang didefinisikan pada Illuminate \ Auth \ Middleware \ Authenticate. Karena middleware ini sudah terdaftar di kernel HTTP Anda, yang perlu Anda lakukan adalah melampirkan middleware ke definisi rute:

Route::get(‘profile’, function () {

// Only authenticated users may enter…

})->middleware(‘auth’);

Jika Anda menggunakan pengontrol, Anda dapat memanggil metode middleware dari konstruktor pengontrol alih-alih melampirkannya dalam definisi rute secara langsung:

{

$this->middleware(‘auth’);

}

Redirecting Unauthenticated Users

Ketika middleware auth mendeteksi pengguna yang tidak sah, itu akan mengarahkan pengguna ke rute login bernama. Anda dapat memodifikasi perilaku ini dengan memperbarui fungsi redirectTo di file app / Http / Middleware / Authenticate.php Anda:

/**

* Get the path the user should be redirected to.

*

* @param \Illuminate\Http\Request $request

* @return string

*/

protected function redirectTo($request)

{

return route(‘login’);

}

Specifying A Guard

Saat memasang middleware auth ke rute, Anda juga dapat menentukan penjaga mana yang harus digunakan untuk mengautentikasi pengguna. Penjaga yang ditentukan harus sesuai dengan salah satu kunci dalam array penjaga dari file konfigurasi auth.php Anda:

{

$this->middleware(‘auth:api’);

}

Konfirmasi kata kunci

Terkadang, Anda mungkin ingin meminta pengguna untuk mengonfirmasi kata sandi mereka sebelum mengakses area spesifik aplikasi Anda. Misalnya, Anda mungkin memerlukan ini sebelum pengguna mengubah pengaturan penagihan dalam aplikasi.

Untuk mencapai hal ini, Laravel menyediakan kata sandi.confirm middleware. Melampirkan password.confirm middleware ke rute akan mengarahkan pengguna ke layar di mana mereka perlu mengkonfirmasi kata sandi mereka sebelum mereka dapat melanjutkan:

Route::get(‘/settings/security’, function () {

// Users must confirm their password before continuing…

})->middleware([‘auth’, ‘password.confirm’]);

E. Login Throttling

Jika Anda menggunakan kelas LoginController bawaan Laravel, sifat Illuminate \ Foundation \ Auth \ ThrottlesLogins sudah akan disertakan dalam pengontrol Anda. Secara default, pengguna tidak akan bisa masuk selama satu menit jika mereka gagal memberikan kredensial yang benar setelah beberapa upaya. Pembatasan ini unik untuk nama pengguna / alamat email dan alamat IP mereka.

F. Manually Authenticating Users

Perhatikan bahwa Anda tidak diharuskan untuk menggunakan pengontrol otentikasi yang disertakan dengan Laravel. Jika Anda memilih untuk menghapus pengontrol ini, Anda perlu mengelola otentikasi pengguna menggunakan kelas otentikasi Laravel secara langsung. Jangan khawatir, itu mudah!

Kami akan mengakses layanan otentikasi Laravel melalui fasad Auth, jadi kami harus memastikan untuk mengimpor fasad Auth di bagian atas kelas. Selanjutnya, mari kita periksa metode upaya:

Metode upaya menerima array pasangan kunci / nilai sebagai argumen pertama. Nilai-nilai dalam array akan digunakan untuk menemukan pengguna di tabel database Anda. Jadi, dalam contoh di atas, pengguna akan diambil oleh nilai kolom email. Jika pengguna ditemukan, kata sandi hash yang disimpan dalam database akan dibandingkan dengan nilai kata sandi yang diteruskan ke metode melalui array. Anda tidak boleh meng hash kata sandi yang ditentukan sebagai nilai kata sandi, karena kerangka kerja akan secara otomatis mengaitkan nilai sebelum membandingkannya dengan kata sandi hash dalam database. Jika kedua kata sandi hash cocok dengan sesi yang diautentikasi akan dimulai untuk pengguna.

Metode upaya akan mengembalikan true jika otentikasi berhasil. Jika tidak, false akan dikembalikan.

Metode yang dimaksud pada redirector akan mengarahkan pengguna ke URL yang mereka coba akses sebelum dicegat oleh middleware otentikasi. URI mundur dapat diberikan untuk metode ini jika tujuan yang dimaksud tidak tersedia.

Specifying Additional Conditions

Jika diinginkan, Anda juga dapat menambahkan kondisi tambahan ke permintaan otentikasi selain email dan kata sandi pengguna. Misalnya, kami dapat memverifikasi bahwa pengguna ditandai sebagai “aktif”.

Accessing Specific Guard Instances

Anda dapat menentukan instance guard yang ingin Anda manfaatkan menggunakan metode guard pada fasad Auth. Ini memungkinkan Anda untuk mengelola otentikasi untuk bagian-bagian terpisah dari aplikasi Anda menggunakan model atau tabel pengguna yang sepenuhnya dapat diautentikasi.

Nama penjaga yang diteruskan ke metode penjaga harus sesuai dengan salah satu penjaga yang dikonfigurasi dalam file konfigurasi auth.php Anda:

Logging Out

Untuk mengeluarkan pengguna dari aplikasi Anda, Anda dapat menggunakan metode logout pada fasad Auth. Ini akan menghapus informasi otentikasi di sesi pengguna:

G. Remembering Users

Jika Anda “mengingat” pengguna, Anda dapat menggunakan metode viaRemember untuk menentukan apakah pengguna diautentikasi menggunakan cookie “ingat saya”.

H. Other Authentication Methods

Otentikasi Instans Pengguna

Jika Anda perlu mencatat instance pengguna yang ada ke dalam aplikasi Anda, Anda dapat memanggil metode login dengan instance pengguna. Objek yang diberikan harus merupakan implementasi dari kontrak Illuminate \ Contracts \ Auth \ Authenticatable. Model App \ User yang disertakan dengan Laravel sudah mengimplementasikan antarmuka ini.

Authenticate A User By ID

Untuk login pengguna ke aplikasi dengan ID mereka, Anda dapat menggunakan metode loginUsingId. Metode ini menerima kunci utama pengguna yang ingin Anda otentikasi:

Authenticate A User Once

Anda dapat menggunakan metode sekali untuk mencatat pengguna ke aplikasi untuk satu permintaan. Tidak ada sesi atau cookie yang akan digunakan, yang berarti metode ini dapat membantu ketika membangun API tanpa kewarganegaraan:

I. HTTP Basic Authentication

HTTP Basic Authentication menyediakan cara cepat untuk mengotentikasi pengguna aplikasi Anda tanpa mengatur halaman “login” khusus. Untuk memulai, pasang middleware auth.basic ke rute Anda. Middleware auth.basic disertakan dengan framework Laravel, jadi Anda tidak perlu mendefinisikannya: Setelah middleware dilampirkan pada rute, Anda akan secara otomatis dimintai kredensial saat mengakses rute di browser Anda. Secara default, middleware auth.basic akan menggunakan kolom email pada catatan pengguna sebagai “nama pengguna”.

A Note On FastCGI

Jika Anda menggunakan PHP FastCGI, otentikasi HTTP Basic mungkin tidak berfungsi dengan benar di luar kotak. Baris berikut harus ditambahkan ke file .htaccess Anda:

Stateless HTTP Basic Authentication

Anda juga dapat menggunakan HTTP Basic Authentication tanpa menetapkan cookie pengidentifikasi pengguna di sesi, yang sangat berguna untuk otentikasi API. Untuk melakukannya, tentukan middleware yang memanggil metode onceBasic. Jika tidak ada respons yang dikembalikan oleh metode onceBasic, permintaan dapat diteruskan lebih lanjut ke dalam aplikasi:

J. Logging Out

Untuk secara manual mengeluarkan pengguna dari aplikasi Anda, Anda dapat menggunakan metode logout pada fasad Auth. Ini akan menghapus informasi otentikasi di sesi pengguna.

K. Invalidating Sessions On Other Devices

Laravel juga menyediakan mekanisme untuk membatalkan dan “keluar” sesi pengguna yang aktif di perangkat lain tanpa membatalkan sesi di perangkat mereka saat ini. Fitur ini biasanya digunakan ketika pengguna mengubah atau memperbarui kata sandi mereka dan Anda ingin membatalkan sesi pada perangkat lain sambil tetap mengotentikasi perangkat saat ini.

Sebelum memulai, Anda harus memastikan bahwa middleware web Illuminate \ Session \ Middleware \ AuthenticateSession hadir dan tidak dikomentari di aplikasi Anda / grup middleware web kelas Http / Kernel.php:

Kemudian, Anda dapat menggunakan metode logoutOtherDevices pada fasad Auth. Metode ini mengharuskan pengguna untuk memberikan kata sandi saat ini, yang harus diterima aplikasi Anda melalui formulir input:

Ketika metode logoutOtherDevices dipanggil, sesi pengguna yang lain akan dibatalkan sepenuhnya, yang berarti mereka akan “keluar” dari semua penjaga yang sebelumnya telah diautentikasi olehnya.

L. Adding Custom Guards

Anda dapat menetapkan penjaga otentikasi Anda sendiri menggunakan metode extended pada fasad Auth. Anda harus melakukan panggilan ini untuk memperpanjang dalam penyedia layanan. Karena Laravel sudah mengirim dengan AuthServiceProvider, kami dapat menempatkan kode di penyedia itu:

Callback yang diteruskan ke metode extended harus mengembalikan implementasi Illuminate \ Contracts \ Auth \ Guard. Antarmuka ini berisi beberapa metode yang perlu Anda terapkan untuk mendefinisikan penjaga kustom. Setelah penjaga kustom Anda telah ditentukan, Anda dapat menggunakan penjaga ini dalam konfigurasi penjaga file konfigurasi auth.php Anda.

Closure Request Guards

Cara paling sederhana untuk mengimplementasikan sistem otentikasi berdasarkan permintaan HTTP, adalah dengan menggunakan metode Auth :: viaRequest. Metode ini memungkinkan Anda untuk dengan cepat menentukan proses otentikasi menggunakan Penutupan tunggal.

Untuk memulai, panggil metode Auth :: viaRequest dalam metode boot AuthServiceProvider Anda. Metode viaRequest menerima nama driver otentikasi sebagai argumen pertama. Nama ini dapat berupa string apa pun yang menggambarkan penjaga kustom Anda. Argumen kedua yang diteruskan ke metode harus Penutupan yang menerima permintaan HTTP yang masuk dan mengembalikan contoh pengguna atau, jika otentikasi gagal, null:

Adding Custom User Providers

Jika Anda tidak menggunakan database relasional tradisional untuk menyimpan pengguna Anda, Anda perlu memperpanjang Laravel dengan penyedia pengguna otentikasi Anda sendiri. Kami akan menggunakan metode penyedia pada fasad Auth untuk menentukan penyedia pengguna khusus.

The User Provider Contract

Implementasi Illuminate \ Contracts \ Auth \ UserProvider hanya bertanggung jawab untuk mengambil implementasi Illuminate \ Contracts \ Auth \ Authenticatable dari sistem penyimpanan persisten, seperti MySQL, Riak, dll. Kedua antarmuka ini memungkinkan mekanisme otentikasi Laravel untuk terus berfungsi tanpa tentang bagaimana data pengguna disimpan atau jenis kelas apa yang digunakan untuk mewakilinya.

Fungsi recoverveById biasanya menerima kunci yang mewakili pengguna, seperti ID peningkatan otomatis dari database MySQL. Implementasi Authenticatable yang cocok dengan ID harus diambil dan dikembalikan oleh metode.

Metode recoverveByCredentials menerima berbagai kredensial yang diteruskan ke metode Auth :: upaya ketika mencoba masuk ke suatu aplikasi. Metode kemudian harus “meminta” penyimpanan persisten yang mendasari untuk pengguna yang cocok dengan kredensial tersebut. Biasanya, metode ini akan menjalankan kueri dengan kondisi “di mana” dengan $ kredensial [‘nama pengguna’]. Metode tersebut kemudian harus mengembalikan implementasi Authenticatable. Metode ini tidak boleh mencoba melakukan validasi atau otentikasi kata sandi.

Metode validateCredentials harus membandingkan $ user yang diberikan dengan kredensial $ untuk mengotentikasi pengguna. Sebagai contoh, metode ini mungkin harus menggunakan Hash :: check untuk membandingkan nilai $ user-> getAuthPassword () dengan nilai $ kredensial [‘kata sandi’]. Metode ini harus mengembalikan benar atau salah yang menunjukkan apakah kata sandi itu valid.

The Authenticatable Contract

Sekarang kita telah menjelajahi masing-masing metode pada UserProvider, mari kita lihat kontrak Authenticatable. Ingat, penyedia harus mengembalikan implementasi dari antarmuka ini dari recoverveById, mengambilveByToken, dan mengambil metodeByCredentials:

Antarmuka ini sederhana. Metode getAuthIdentifierName harus mengembalikan nama bidang “kunci utama” pengguna dan metode getAuthIdentifier harus mengembalikan “kunci utama” pengguna. Di MySQL back-end, sekali lagi, ini akan menjadi kunci primer penambahan otomatis. GetAuthPassword harus mengembalikan kata sandi hash pengguna. Antarmuka ini memungkinkan sistem otentikasi untuk bekerja dengan kelas Pengguna apa pun, apa pun ORM atau lapisan abstraksi penyimpanan yang Anda gunakan. Secara default, Laravel menyertakan kelas Pengguna di direktori aplikasi yang mengimplementasikan antarmuka ini, jadi Anda dapat berkonsultasi dengan kelas ini untuk contoh implementasi.

M. Event

Laravel memunculkan beragam acara selama proses otentikasi. Anda dapat melampirkan pendengar ke acara ini di EventServiceProvider Anda

Add a comment

Related posts:

How setting time limits in sports participation can enhance child growth?

According to trainers, parents should limit sports participation for children, and for rightful reasons. Young athletes that are involved in sports practice too hard, which increases the risk of…