لاراول فورتیفای
- معرفی
- نصب و راه اندازی
- احراز هویت
- احراز هویت دو عاملی
- ثبت
- تنظیم مجدد رمز عبور
- تایید ایمیل
- تایید رمز عبور
معرفی
        
            Laravel Fortify
        
    
    
         یک پیادهسازی باطن احراز هویت آگنوستیک برای لاراول است. Fortify مسیرها و کنترلکنندههای مورد نیاز برای اجرای تمامی ویژگیهای احراز هویت لاراول، از جمله ورود، ثبت نام، بازنشانی رمز عبور، تأیید ایمیل و موارد دیگر را ثبت میکند. پس از نصب فورتیفای، میتوانید 
    route:list
    
        دستور Artisan را برای مشاهده مسیرهایی که فورتیفای ثبت کرده است، اجرا کنید.
    
از آنجایی که Fortify رابط کاربری خود را ارائه نمی دهد، به این معناست که با رابط کاربری خود شما جفت شود که برای مسیرهایی که ثبت می کند درخواست می کند. در ادامه این مستندات دقیقاً درباره نحوه درخواست برای این مسیرها صحبت خواهیم کرد.
به یاد داشته باشید، Fortify بسته ای است که به شما اجازه می دهد تا ویژگی های احراز هویت لاراول را پیاده سازی کنید. شما نیازی به استفاده از آن ندارید. شما همیشه آزاد هستید که به صورت دستی با سرویس های احراز هویت لاراول با دنبال کردن اسناد موجود در احراز هویت ، تنظیم مجدد رمز عبور و اسناد تأیید ایمیل ، تعامل داشته باشید.
Fortify چیست؟
همانطور که قبلا ذکر شد، Laravel Fortify یک پیادهسازی باطن احراز هویت آگنوستیک برای لاراول است. Fortify مسیرها و کنترلکنندههای مورد نیاز برای اجرای تمامی ویژگیهای احراز هویت لاراول، از جمله ورود، ثبت نام، بازنشانی رمز عبور، تأیید ایمیل و موارد دیگر را ثبت میکند.
برای استفاده از ویژگی های احراز هویت لاراول نیازی به استفاده از Fortify نیست. شما همیشه آزاد هستید که به صورت دستی با سرویس های احراز هویت لاراول با دنبال کردن اسناد موجود در احراز هویت ، تنظیم مجدد رمز عبور و اسناد تأیید ایمیل ، تعامل داشته باشید.
اگر تازه وارد لاراول هستید، ممکن است بخواهید قبل از استفاده از Laravel Fortify، کیت شروع برنامه Laravel Breeze را بررسی کنید. Laravel Breeze یک داربست احراز هویت برای برنامه شما فراهم می کند که شامل یک رابط کاربری ساخته شده با Tailwind CSS است . برخلاف Fortify، Breeze مسیرها و کنترلرهای خود را مستقیماً در برنامه شما منتشر می کند. این به شما امکان می دهد قبل از اینکه به Laravel Fortify این ویژگی ها را برای شما پیاده سازی کند، ویژگی های احراز هویت لاراول را مطالعه کرده و راحت باشید.
Laravel Fortify اساساً مسیرها و کنترلرهای Laravel Breeze را در نظر می گیرد و آنها را به عنوان بسته ای ارائه می دهد که شامل رابط کاربری نیست. این به شما این امکان را میدهد که به سرعت پیادهسازی باطن لایه احراز هویت برنامهتان را بدون اینکه به نظرات ظاهری خاصی گره بخورید، داربست کنید.
چه زمانی باید از Fortify استفاده کنم؟
ممکن است این سوال برای شما پیش بیاید که چه زمانی استفاده از لاراول فورتیفای مناسب است. ابتدا، اگر از یکی از کیت های شروع برنامه لاراول استفاده می کنید ، نیازی به نصب Laravel Fortify ندارید زیرا همه کیت های شروع برنامه لاراول قبلاً یک پیاده سازی احراز هویت کامل را ارائه می دهند.
اگر از کیت شروع برنامه استفاده نمی کنید و برنامه شما به ویژگی های احراز هویت نیاز دارد، دو گزینه دارید: به صورت دستی ویژگی های احراز هویت برنامه خود را پیاده سازی کنید یا از Laravel Fortify برای ارائه اجرای Backend این ویژگی ها استفاده کنید.
اگر نصب Fortify را انتخاب کنید، رابط کاربری شما برای احراز هویت و ثبت نام کاربران، درخواست هایی را برای مسیرهای احراز هویت Fortify که در این مستندات به تفصیل آمده است، ارسال می کند.
اگر بهجای استفاده از Fortify، تعامل دستی با سرویسهای احراز هویت لاراول را انتخاب میکنید، میتوانید این کار را با دنبال کردن اسناد موجود در اسناد احراز هویت ، بازنشانی رمز عبور و تأیید ایمیل انجام دهید .
Laravel Fortify و Laravel Sanctum
برخی از توسعه دهندگان در مورد تفاوت Laravel Sanctum و Laravel Fortify گیج می شوند. از آنجایی که این دو بسته دو مشکل متفاوت اما مرتبط را حل می کنند، Laravel Fortify و Laravel Sanctum بسته های متقابل انحصاری یا رقیب نیستند.
Laravel Sanctum تنها به مدیریت توکنهای API و احراز هویت کاربران موجود با استفاده از کوکیهای جلسه یا توکنها میپردازد. Sanctum هیچ مسیری برای ثبت نام کاربر، تنظیم مجدد رمز عبور و غیره ارائه نمی دهد.
اگر میخواهید به صورت دستی لایه احراز هویت را برای برنامهای بسازید که یک API ارائه میدهد یا به عنوان پشتیبان یک برنامه تک صفحهای عمل میکند، کاملاً ممکن است از Laravel Fortify (برای ثبت نام کاربر، تنظیم مجدد رمز عبور و غیره) استفاده کنید. ) و Laravel Sanctum (مدیریت توکن API، احراز هویت جلسه).
نصب و راه اندازی
برای شروع، Fortify را با استفاده از مدیریت بسته Composer نصب کنید:
composer require laravel/fortify
    
        سپس، منابع Fortify را با استفاده از 
    fortify:install
    
        دستور Artisan منتشر کنید:
    
php artisan fortify:install
    
        این دستور اقدامات Fortify را در 
    app/Actions
    
        دایرکتوری شما منتشر می کند که در صورت عدم وجود آن ایجاد می شود. علاوه بر این 
    FortifyServiceProvider
    
        ، فایل پیکربندی و تمامی انتقالهای لازم پایگاه داده منتشر خواهد شد.
    
در مرحله بعد، باید پایگاه داده خود را مهاجرت کنید:
php artisan migrateویژگی های تقویت شده
    
        فایل 
    fortify
    
        پیکربندی حاوی یک 
    features
    
        آرایه پیکربندی است. این آرایه مشخص میکند که Fortify کدام مسیرها/ویژگیهای Backend را بهطور پیشفرض در معرض نمایش قرار میدهد. اگر از Fortify در ترکیب با 
    
        
            Laravel Jetstream
        
    
    
         استفاده نمیکنید 
        ، توصیه میکنیم فقط ویژگیهای زیر را فعال کنید، که ویژگیهای اصلی احراز هویت هستند که توسط اکثر برنامههای لاراول ارائه میشوند:
    
'features' => [    Features::registration(),    Features::resetPasswords(),    Features::emailVerification(),],غیرفعال کردن نماها
    
        به طور پیش فرض، Fortify مسیرهایی را تعریف می کند که برای بازگرداندن نماها در نظر گرفته شده است، مانند صفحه ورود یا صفحه ثبت نام. با این حال، اگر در حال ساخت یک برنامه تک صفحه ای مبتنی بر جاوا اسکریپت هستید، ممکن است به این مسیرها نیاز نداشته باشید. به همین دلیل، میتوانید با تنظیم مقدار پیکربندی در 
        فایل پیکربندی 
    views
    
        برنامه خود، این مسیرها را به طور کامل غیرفعال کنید 
        :
    config/fortify.php
    false
    
'views' => false,غیرفعال کردن نماها و بازنشانی رمز عبور
    
        اگر نماهای Fortify را غیرفعال کنید و ویژگیهای بازنشانی رمز عبور را برای برنامه خود پیادهسازی میکنید، همچنان باید مسیری به نام تعیین کنید 
    password.reset
    
        که مسئول نمایش نمای "بازنشانی رمز عبور" برنامه شما است. این امر ضروری است زیرا اعلان لاراول 
    Illuminate\Auth\Notifications\ResetPassword
    
        URL بازنشانی رمز عبور را از طریق 
    password.reset
    
        مسیر نامگذاری شده ایجاد می کند.
    
احراز هویت
برای شروع، باید به Fortify آموزش دهیم که چگونه نمای "ورود" خود را بازگرداند. به یاد داشته باشید، Fortify یک کتابخانه احراز هویت بدون سر است. اگر میخواهید یک پیادهسازی frontend از ویژگیهای احراز هویت لاراول که قبلاً برای شما تکمیل شده است، داشته باشید، باید از یک کیت شروع برنامه استفاده کنید .
    
        تمام منطق رندر نمای احراز هویت ممکن است با استفاده از روش های مناسب موجود از طریق 
    Laravel\Fortify\Fortify
    
        کلاس سفارشی شود. به طور معمول، شما باید این متد را از 
    boot
    
        متد کلاس برنامه خود فراخوانی کنید 
    App\Providers\FortifyServiceProvider
    
        . Fortify در تعریف مسیری که این نمای را برمی گرداند، مراقبت می کند 
    /login
    
        :
    
use Laravel\Fortify\Fortify; /** * Bootstrap any application services. */public function boot(): void{    Fortify::loginView(function () {        return view('auth.login');    });     // ...}
    
        الگوی ورود شما باید دارای فرمی باشد که یک درخواست POST به 
    /login
    
        . نقطه 
    /login
    
        پایانی انتظار یک رشته 
    email
    
        / 
    username
    
        و یک 
    password
    
        . نام فیلد ایمیل / نام کاربری باید با 
    username
    
        مقدار داخل 
    config/fortify.php
    
        فایل پیکربندی مطابقت داشته باشد. علاوه بر این، 
    remember
    
        ممکن است یک فیلد بولی برای نشان دادن اینکه کاربر مایل است از عملکرد "مرا به خاطر بسپار" ارائه شده توسط لاراول ارائه شود.
    
    
        اگر تلاش برای ورود به سیستم موفقیت آمیز باشد، Fortify شما را به URI پیکربندی شده از طریق 
    home
    
        گزینه پیکربندی در فایل پیکربندی برنامه شما هدایت می کند 
    fortify
    
        . اگر درخواست ورود به سیستم یک درخواست XHR باشد، یک پاسخ HTTP 200 برگردانده خواهد شد.
    
    
        اگر درخواست موفقیت آمیز نبود، کاربر به صفحه ورود به سیستم هدایت می شود و خطاهای اعتبارسنجی از طریق 
    $errors 
        
            متغیر الگوی Blade
        
    
    
         به اشتراک گذاشته شده در دسترس شما قرار می گیرد . یا در صورت درخواست XHR، خطاهای اعتبارسنجی با پاسخ HTTP 422 برگردانده میشوند.
    
سفارشی کردن احراز هویت کاربر
    
        Fortify به طور خودکار کاربر را بر اساس اعتبار ارائه شده و محافظ احراز هویت که برای برنامه شما پیکربندی شده است، بازیابی و احراز هویت می کند. با این حال، ممکن است گاهی اوقات بخواهید سفارشی سازی کاملی در مورد نحوه احراز هویت اعتبار ورود و بازیابی کاربران داشته باشید. خوشبختانه، Fortify به شما اجازه می دهد تا با استفاده از این 
    Fortify::authenticateUsing
    
        روش به راحتی این کار را انجام دهید.
    
    
        این روش بسته شدنی را میپذیرد که درخواست HTTP ورودی را دریافت میکند. بسته شدن مسئول تأیید اعتبار ورود به سیستم پیوست شده به درخواست و بازگرداندن نمونه کاربر مرتبط است. اگر اعتبارنامه ها نامعتبر هستند یا هیچ کاربری پیدا نمی شود، 
    null
    
        یا 
    false
    
        باید با بسته شدن بازگردانده شوند. به طور معمول، این متد باید از 
    boot
    
        متد شما 
        فراخوانی شود 
    FortifyServiceProvider
    
        :
    
use App\Models\User;use Illuminate\Http\Request;use Illuminate\Support\Facades\Hash;use Laravel\Fortify\Fortify; /** * Bootstrap any application services. */public function boot(): void{    Fortify::authenticateUsing(function (Request $request) {        $user = User::where('email', $request->email)->first();         if ($user &&            Hash::check($request->password, $user->password)) {            return $user;        }    });     // ...}گارد احراز هویت
    
        میتوانید محافظ احراز هویت استفاده شده توسط Fortify را در فایل پیکربندی برنامه خود سفارشی کنید 
    fortify
    
        . با این حال، باید مطمئن شوید که گارد پیکربندی شده پیاده سازی شده است 
    Illuminate\Contracts\Auth\StatefulGuard
    
        . اگر می خواهید از Laravel Fortify برای احراز هویت یک SPA استفاده کنید، باید از 
    web
    
        گارد پیش فرض لاراول در ترکیب با 
    
        
            Laravel Sanctum
        
    
    
         استفاده کنید .
    
سفارشی کردن خط لوله احراز هویت
    
        Laravel Fortify درخواست های ورود را از طریق خط لوله ای از کلاس های فراخوانی احراز هویت می کند. اگر بخواهید، میتوانید خط لوله سفارشی کلاسهایی را تعریف کنید که درخواستهای ورود باید از طریق آن ارسال شوند. هر کلاس باید 
    __invoke
    
        متدی داشته باشد که 
    Illuminate\Http\Request
    
        نمونه ورودی را دریافت میکند و مانند 
    
        
            میانافزار
        
    
    
         ، 
    $next
    
        متغیری است که برای ارسال درخواست به کلاس بعدی در خط لوله فراخوانی میشود.
    
    
        برای تعریف خط لوله سفارشی خود، می توانید از 
    Fortify::authenticateThrough
    
        روش استفاده کنید. این روش بسته شدنی را میپذیرد که باید آرایه کلاسها را برای لولهکردن درخواست ورود از طریق آن بازگرداند. به طور معمول، این متد باید از 
    boot
    
        متد کلاس شما فراخوانی شود 
    App\Providers\FortifyServiceProvider
    
        .
    
مثال زیر شامل تعریف خط لوله پیشفرض است که میتوانید هنگام انجام تغییرات خود از آن به عنوان نقطه شروع استفاده کنید:
use Laravel\Fortify\Actions\AttemptToAuthenticate;use Laravel\Fortify\Actions\EnsureLoginIsNotThrottled;use Laravel\Fortify\Actions\PrepareAuthenticatedSession;use Laravel\Fortify\Actions\RedirectIfTwoFactorAuthenticatable;use Laravel\Fortify\Fortify;use Illuminate\Http\Request; Fortify::authenticateThrough(function (Request $request) {    return array_filter([            config('fortify.limiters.login') ? null : EnsureLoginIsNotThrottled::class,            Features::enabled(Features::twoFactorAuthentication()) ? RedirectIfTwoFactorAuthenticatable::class : null,            AttemptToAuthenticate::class,            PrepareAuthenticatedSession::class,    ]);});سفارشی کردن تغییر مسیرها
    
        اگر تلاش برای ورود به سیستم موفقیت آمیز باشد، Fortify شما را به URI پیکربندی شده از طریق 
    home
    
        گزینه پیکربندی در فایل پیکربندی برنامه شما هدایت می کند 
    fortify
    
        . اگر درخواست ورود به سیستم یک درخواست XHR باشد، یک پاسخ HTTP 200 برگردانده خواهد شد. پس از خروج کاربر از برنامه، کاربر به 
    /
    
        URI هدایت می شود.
    
    
        اگر به سفارشیسازی پیشرفته این رفتار نیاز دارید، میتوانید پیادهسازیهای 
    LoginResponse
    
        و 
    LogoutResponse
    
        قراردادها را به 
    
        
            ظرف سرویس
        
    
    
         لاراول متصل کنید . به طور معمول، این باید در 
    register
    
        متد کلاس برنامه شما 
        انجام شود 
    App\Providers\FortifyServiceProvider
    
        :
    
use Laravel\Fortify\Contracts\LogoutResponse; /** * Register any application services. */public function register(): void{    $this->app->instance(LogoutResponse::class, new class implements LogoutResponse {        public function toResponse($request)        {            return redirect('/');        }    });}احراز هویت دو عاملی
هنگامی که ویژگی احراز هویت دو عاملی Fortify فعال است، کاربر باید یک رمز عددی شش رقمی را در طول فرآیند احراز هویت وارد کند. این نشانه با استفاده از یک رمز عبور یک بار مصرف مبتنی بر زمان (TOTP) تولید میشود که میتواند از هر برنامه احراز هویت تلفن همراه سازگار با TOTP مانند Google Authenticator بازیابی شود.
    App\Models\User
    
        قبل از شروع، ابتدا باید مطمئن شوید که مدل 
        برنامه شما از این 
    Laravel\Fortify\TwoFactorAuthenticatable
    
        ویژگی استفاده می کند:
    
<?php namespace App\Models; use Illuminate\Foundation\Auth\User as Authenticatable;use Illuminate\Notifications\Notifiable;use Laravel\Fortify\TwoFactorAuthenticatable; class User extends Authenticatable{    use Notifiable, TwoFactorAuthenticatable;}در مرحله بعد، باید یک صفحه نمایش در برنامه خود بسازید که کاربران بتوانند تنظیمات احراز هویت دو عاملی خود را مدیریت کنند. این صفحه باید به کاربر اجازه دهد تا احراز هویت دو عاملی را فعال و غیرفعال کند و همچنین کدهای بازیابی احراز هویت دو عاملی خود را بازسازی کند.
بهطور پیشفرض،
featuresآرایهfortifyفایل پیکربندی به تنظیمات احراز هویت دو عاملی Fortify دستور میدهد تا قبل از تغییر، تأیید رمز عبور را لازم داشته باشند. بنابراین، برنامه شما باید قبل از ادامه، ویژگی تأیید رمز عبور Fortify را اجرا کند .
فعال کردن احراز هویت دو عاملی
    
        برای شروع فعال کردن احراز هویت دو عاملی، برنامه شما باید یک درخواست POST به 
    /user/two-factor-authentication
    
        نقطه پایانی تعریف شده توسط Fortify ارسال کند. اگر درخواست موفقیت آمیز باشد، کاربر به URL قبلی هدایت می شود و 
    status
    
        متغیر جلسه روی تنظیم می شود 
    two-factor-authentication-enabled
    
        . می توانید این 
    status
    
        متغیر جلسه را در قالب های خود شناسایی کنید تا پیام موفقیت مناسب را نمایش دهید. اگر درخواست یک درخواست XHR بود، 
    200
    
        پاسخ HTTP برگردانده می شود.
    
پس از انتخاب فعال کردن احراز هویت دو عاملی، کاربر همچنان باید پیکربندی احراز هویت دو عاملی خود را با ارائه یک کد احراز هویت دو عاملی معتبر "تأیید" کند. بنابراین، پیام "موفقیت" شما باید به کاربر دستور دهد که هنوز تایید احراز هویت دو عاملی مورد نیاز است:
@if (session('status') == 'two-factor-authentication-enabled')    <div class="mb-4 font-medium text-sm">        Please finish configuring two factor authentication below.    </div>@endif
    
        در مرحله بعد، باید کد QR احراز هویت دو عاملی را برای کاربر نمایش دهید تا در برنامه احراز هویت خود اسکن کند. اگر از Blade برای رندر کردن ظاهر برنامه خود استفاده می کنید، می توانید کد QR SVG را با استفاده از 
    twoFactorQrCodeSvg
    
        روش موجود در نمونه کاربر بازیابی کنید:
    
$request->user()->twoFactorQrCodeSvg();
    
        اگر در حال ساختن یک فرانتاند مبتنی بر جاوا اسکریپت هستید، میتوانید یک درخواست XHR GET به 
    /user/two-factor-qr-code
    
        نقطه پایانی ارسال کنید تا کد QR احراز هویت دو عاملی کاربر را بازیابی کنید. این نقطه پایانی یک شی JSON حاوی یک کلید را برمی گرداند 
    svg
    
        .
    
تایید احراز هویت دو عاملی
    
        علاوه بر نمایش کد QR احراز هویت دو عاملی کاربر، باید یک ورودی متنی ارائه دهید که در آن کاربر بتواند یک کد احراز هویت معتبر برای "تأیید" پیکربندی احراز هویت دو عاملی خود ارائه کند. این کد باید از طریق یک درخواست POST به 
    /user/confirmed-two-factor-authentication
    
        نقطه پایانی تعریف شده توسط Fortify در اختیار برنامه لاراول قرار گیرد.
    
    
        در صورت موفقیت آمیز بودن درخواست، کاربر به URL قبلی هدایت می شود و 
    status
    
        متغیر جلسه به صورت زیر تنظیم می شود 
    two-factor-authentication-confirmed
    
        :
    
@if (session('status') == 'two-factor-authentication-confirmed')    <div class="mb-4 font-medium text-sm">        Two factor authentication confirmed and enabled successfully.    </div>@endif
    
        اگر درخواست به نقطه پایانی تایید احراز هویت دو عاملی از طریق یک درخواست XHR انجام شده باشد، یک 
    200
    
        پاسخ HTTP برگردانده خواهد شد.
    
نمایش کدهای بازیابی
همچنین باید دو کد بازیابی فاکتور کاربر را نمایش دهید. این کدهای بازیابی به کاربر این امکان را می دهد که در صورت از دست دادن دسترسی به دستگاه تلفن همراه خود، احراز هویت را انجام دهد. اگر از Blade برای رندر کردن ظاهر برنامه خود استفاده می کنید، می توانید از طریق نمونه کاربری تأیید شده به کدهای بازیابی دسترسی داشته باشید:
(array) $request->user()->recoveryCodes()
    
        اگر در حال ساختن یک فرانت اند با جاوا اسکریپت هستید، می توانید یک درخواست XHR GET به 
    /user/two-factor-recovery-codes
    
        نقطه پایانی ارسال کنید. این نقطه پایانی یک آرایه JSON حاوی کدهای بازیابی کاربر را برمی گرداند.
    
    
        برای ایجاد مجدد کدهای بازیابی کاربر، برنامه شما باید یک درخواست POST به 
    /user/two-factor-recovery-codes
    
        نقطه پایانی ارسال کند.
    
احراز هویت با احراز هویت دو عاملی
    
        در طول فرآیند احراز هویت، Fortify به طور خودکار کاربر را به صفحه چالش احراز هویت دو عاملی برنامه شما هدایت می کند. با این حال، اگر برنامه شما یک درخواست ورود به سیستم XHR ارائه میکند، پاسخ JSON که پس از یک تلاش موفق برای احراز هویت بازگردانده میشود، حاوی یک شی JSON است که دارای یک 
    two_factor
    
        ویژگی بولی است. شما باید این مقدار را بررسی کنید تا بدانید که آیا باید به صفحه چالش احراز هویت دو عاملی برنامه خود هدایت شوید یا خیر.
    
    
        برای شروع اجرای قابلیت احراز هویت دو عاملی، باید به Fortify آموزش دهیم که چگونه نمای چالش احراز هویت دو عاملی خود را بازگرداند. تمام منطق رندر نمای احراز هویت Fortify ممکن است با استفاده از روش های مناسب موجود از طریق 
    Laravel\Fortify\Fortify
    
        کلاس سفارشی شود. به طور معمول، شما باید این متد را از 
    boot
    
        متد کلاس برنامه خود فراخوانی کنید 
    App\Providers\FortifyServiceProvider
    
        :
    
use Laravel\Fortify\Fortify; /** * Bootstrap any application services. */public function boot(): void{    Fortify::twoFactorChallengeView(function () {        return view('auth.two-factor-challenge');    });     // ...}
    
        Fortify وظیفه تعیین مسیری را بر عهده خواهد داشت 
    /two-factor-challenge
    
        که این نمای را برمی گرداند. الگوی 
        شما 
    two-factor-challenge
    
        باید دارای فرمی باشد که درخواست POST را به 
    /two-factor-challenge
    
        نقطه پایانی ارسال کند. این 
    /two-factor-challenge
    
        عمل، 
    code
    
        فیلدی را انتظار دارد که حاوی یک نشانه معتبر TOTP یا 
    recovery_code
    
        فیلدی است که حاوی یکی از کدهای بازیابی کاربر باشد.
    
    
        اگر تلاش برای ورود به سیستم موفقیت آمیز باشد، Fortify کاربر را به URI پیکربندی شده از طریق 
    home
    
        گزینه پیکربندی در فایل پیکربندی برنامه شما هدایت می کند 
    fortify
    
        . اگر درخواست ورود به سیستم یک درخواست XHR باشد، یک پاسخ HTTP 204 برگردانده خواهد شد.
    
    
        اگر درخواست موفقیت آمیز نبود، کاربر به صفحه چالش دو عاملی هدایت می شود و خطاهای اعتبارسنجی از طریق 
    $errors 
        
            متغیر الگوی Blade
        
    
    
         به اشتراک گذاشته شده در دسترس شما قرار می گیرد . یا در صورت درخواست XHR، خطاهای اعتبارسنجی با یک پاسخ HTTP 422 برگردانده می شود.
    
غیرفعال کردن احراز هویت دو عاملی
    
        برای غیرفعال کردن احراز هویت دو عاملی، برنامه شما باید یک درخواست DELETE به 
    /user/two-factor-authentication
    
        نقطه پایانی ارسال کند. به یاد داشته باشید، نقاط پایانی احراز هویت دو عاملی Fortify 
        قبل از فراخوانی نیاز به 
    
        
            تأیید رمز عبور دارند.
        
    
    
ثبت
برای شروع اجرای قابلیت ثبت برنامه ما، باید به Fortify آموزش دهیم که چگونه نمای "ثبت نام" خود را بازگرداند. به یاد داشته باشید، Fortify یک کتابخانه احراز هویت بدون سر است. اگر میخواهید یک پیادهسازی frontend از ویژگیهای احراز هویت لاراول که قبلاً برای شما تکمیل شده است، داشته باشید، باید از یک کیت شروع برنامه استفاده کنید .
    
        تمام منطق رندر نمای Fortify ممکن است با استفاده از روش های مناسب موجود از طریق 
    Laravel\Fortify\Fortify
    
        کلاس سفارشی شود. به طور معمول، شما باید این متد را از 
    boot
    
        متد کلاس خود فراخوانی کنید 
    App\Providers\FortifyServiceProvider
    
        :
    
use Laravel\Fortify\Fortify; /** * Bootstrap any application services. */public function boot(): void{    Fortify::registerView(function () {        return view('auth.register');    });     // ...}
    
        Fortify وظیفه تعیین مسیری را بر عهده خواهد داشت 
    /register
    
        که این نمای را برمی گرداند. الگوی 
        شما 
    register
    
        باید دارای فرمی باشد که درخواست POST را به 
    /register
    
        نقطه پایانی تعریف شده توسط Fortify ارسال کند.
    
    
        نقطه 
    /register
    
        پایانی انتظار یک رشته 
    name
    
        ، آدرس ایمیل رشته / نام کاربری، 
    password
    
        و 
    password_confirmation
    
        فیلدها را دارد. نام فیلد ایمیل / نام کاربری باید با 
    username
    
        مقدار پیکربندی تعریف شده در فایل پیکربندی برنامه شما مطابقت داشته باشد 
    fortify
    
        .
    
    
        اگر تلاش برای ثبت نام موفقیت آمیز باشد، Fortify کاربر را به URI پیکربندی شده از طریق 
    home
    
        گزینه پیکربندی در فایل پیکربندی برنامه شما هدایت می کند 
    fortify
    
        . اگر درخواست یک درخواست XHR بود، یک پاسخ HTTP 201 برگردانده می شود.
    
    
        اگر درخواست موفقیت آمیز نبود، کاربر به صفحه ثبت نام هدایت می شود و خطاهای اعتبارسنجی از طریق 
    $errors 
        
            متغیر الگوی Blade
        
    
    
         به اشتراک گذاشته شده در دسترس شما قرار می گیرد . یا در صورت درخواست XHR، خطاهای اعتبارسنجی با یک پاسخ HTTP 422 برگردانده می شود.
    
سفارشی سازی ثبت نام
    
        فرآیند اعتبار سنجی و ایجاد کاربر ممکن است با تغییر 
    App\Actions\Fortify\CreateNewUser
    
        عملکردی که هنگام نصب Laravel Fortify ایجاد شده است، سفارشی شود.
    
تنظیم مجدد رمز عبور
درخواست پیوند بازنشانی رمز عبور
برای شروع اجرای قابلیت بازنشانی رمز عبور برنامه ما، باید به Fortify آموزش دهیم که چگونه نمای "گذرواژه فراموش شده" خود را بازگرداند. به یاد داشته باشید، Fortify یک کتابخانه احراز هویت بدون سر است. اگر میخواهید یک پیادهسازی frontend از ویژگیهای احراز هویت لاراول که قبلاً برای شما تکمیل شده است، داشته باشید، باید از یک کیت شروع برنامه استفاده کنید .
    
        تمام منطق رندر نمای Fortify ممکن است با استفاده از روش های مناسب موجود از طریق 
    Laravel\Fortify\Fortify
    
        کلاس سفارشی شود. به طور معمول، شما باید این متد را از 
    boot
    
        متد کلاس برنامه خود فراخوانی کنید 
    App\Providers\FortifyServiceProvider
    
        :
    
use Laravel\Fortify\Fortify; /** * Bootstrap any application services. */public function boot(): void{    Fortify::requestPasswordResetLinkView(function () {        return view('auth.forgot-password');    });     // ...}
    
        Fortify از تعریف نقطه پایانی که این نمای را برمی گرداند، مراقبت می کند 
    /forgot-password
    
        . الگوی 
        شما 
    forgot-password
    
        باید دارای فرمی باشد که درخواست POST را به 
    /forgot-password
    
        نقطه پایانی ارسال کند.
    
    
        نقطه 
    /forgot-password
    
        پایانی انتظار یک 
    email
    
        فیلد رشته ای را دارد. نام این فیلد / ستون پایگاه داده باید با 
    email
    
        مقدار پیکربندی در فایل پیکربندی برنامه شما مطابقت داشته باشد 
    fortify
    
        .
    
رسیدگی به پاسخ درخواست پیوند بازنشانی رمز عبور
    
        اگر درخواست پیوند بازنشانی رمز عبور موفقیت آمیز بود، Fortify کاربر را به نقطه پایانی هدایت می کند 
    /forgot-password
    
        و یک ایمیل با یک پیوند امن برای کاربر ارسال می کند که می تواند از آن برای بازنشانی رمز عبور خود استفاده کند. اگر درخواست یک درخواست XHR بود، یک پاسخ HTTP 200 برگردانده می شود.
    
    /forgot-password
    
        پس از اینکه پس از یک درخواست موفقیت آمیز 
        به نقطه پایانی هدایت شد ، 
    status
    
        متغیر نشست ممکن است برای نمایش وضعیت تلاش برای پیوند بازنشانی رمز عبور استفاده شود.
    
    
        مقدار 
    $status
    
        متغیر session با یکی از رشته های ترجمه تعریف شده در 
    passwords 
        
            فایل زبان
        
    
    
         برنامه شما مطابقت دارد . اگر میخواهید این مقدار را سفارشی کنید و فایلهای زبان لاراول را منتشر نکردهاید، میتوانید از طریق 
    lang:publish
    
        دستور Artisan این کار را انجام دهید:
    
@if (session('status'))    <div class="mb-4 font-medium text-sm text-green-600">        {{ session('status') }}    </div>@endif
    
        اگر درخواست موفقیت آمیز نبود، کاربر به صفحه پیوند بازنشانی رمز عبور درخواست هدایت می شود و خطاهای اعتبارسنجی از طریق 
    $errors 
        
            متغیر الگوی Blade
        
    
    
         به اشتراک گذاشته شده در دسترس شما خواهد بود . یا در صورت درخواست XHR، خطاهای اعتبارسنجی با یک پاسخ HTTP 422 برگردانده می شود.
    
بازنشانی رمز عبور
برای اتمام اجرای عملکرد بازنشانی رمز عبور برنامه ما، باید به Fortify آموزش دهیم که چگونه نمای "بازنشانی رمز عبور" خود را بازگرداند.
    
        تمام منطق رندر نمای Fortify ممکن است با استفاده از روش های مناسب موجود از طریق 
    Laravel\Fortify\Fortify
    
        کلاس سفارشی شود. به طور معمول، شما باید این متد را از 
    boot
    
        متد کلاس برنامه خود فراخوانی کنید 
    App\Providers\FortifyServiceProvider
    
        :
    
use Laravel\Fortify\Fortify;use Illuminate\Http\Request; /** * Bootstrap any application services. */public function boot(): void{    Fortify::resetPasswordView(function (Request $request) {        return view('auth.reset-password', ['request' => $request]);    });     // ...}
    
        Fortify به تعیین مسیر برای نمایش این نما رسیدگی می کند. الگوی 
        شما 
    reset-password
    
        باید دارای فرمی باشد که یک درخواست POST به 
    /reset-password
    
        .
    
    
        نقطه 
    /reset-password
    
        پایانی انتظار دارد یک 
    email
    
        فیلد رشته، یک 
    password
    
        فیلد، یک 
    password_confirmation
    
        فیلد و یک فیلد مخفی به نام 
    token
    
        که حاوی مقدار باشد 
    request()->route('token')
    
        . نام فیلد / ستون پایگاه داده "ایمیل" باید با 
    email
    
        مقدار پیکربندی تعریف شده در فایل پیکربندی برنامه شما مطابقت داشته باشد 
    fortify
    
        .
    
مدیریت پاسخ بازنشانی رمز عبور
    
        اگر درخواست بازنشانی رمز عبور موفقیت آمیز بود، Fortify به 
    /login
    
        مسیر برگشت هدایت می شود تا کاربر بتواند با رمز عبور جدید خود وارد شود. علاوه بر این، یک 
    status
    
        متغیر جلسه تنظیم می شود تا بتوانید وضعیت موفقیت آمیز تنظیم مجدد را در صفحه ورود به سیستم خود نمایش دهید:
    
@if (session('status'))    <div class="mb-4 font-medium text-sm text-green-600">        {{ session('status') }}    </div>@endifاگر درخواست یک درخواست XHR بود، یک پاسخ HTTP 200 برگردانده می شود.
    
        اگر درخواست موفقیت آمیز نبود، کاربر به صفحه بازنشانی رمز عبور هدایت می شود و خطاهای اعتبارسنجی از طریق 
    $errors 
        
            متغیر الگوی Blade
        
    
    
         به اشتراک گذاشته شده در دسترس شما قرار می گیرد . یا در صورت درخواست XHR، خطاهای اعتبارسنجی با یک پاسخ HTTP 422 برگردانده می شود.
    
سفارشی کردن بازنشانی رمز عبور
    
        فرآیند بازنشانی رمز عبور ممکن است با تغییر 
    App\Actions\ResetUserPassword
    
        عملکردی که هنگام نصب Laravel Fortify ایجاد شده است، سفارشی شود.
    
تایید ایمیل
    
        پس از ثبت نام، ممکن است بخواهید کاربران قبل از ادامه دسترسی به برنامه شما، آدرس ایمیل خود را تأیید کنند. برای شروع، مطمئن شوید که این ویژگی در آرایه 
        فایل پیکربندی 
    emailVerification
    
        شما فعال است 
        . در مرحله بعد، باید مطمئن شوید که 
        کلاس شما 
        رابط را پیاده سازی می کند.
    fortify
    features
    App\Models\User
    Illuminate\Contracts\Auth\MustVerifyEmail
    
پس از تکمیل این دو مرحله راه اندازی، کاربرانی که به تازگی ثبت نام کرده اند ایمیلی دریافت می کنند که از آنها می خواهد مالکیت آدرس ایمیل خود را تأیید کنند. با این حال، ما باید به Fortify اطلاع دهیم که چگونه صفحه تأیید ایمیل را نمایش دهد که به کاربر اطلاع می دهد که باید بر روی پیوند تأیید در ایمیل کلیک کند.
    
        تمام منطق رندر نمای Fortify ممکن است با استفاده از روش های مناسب موجود از طریق 
    Laravel\Fortify\Fortify
    
        کلاس سفارشی شود. به طور معمول، شما باید این متد را از 
    boot
    
        متد کلاس برنامه خود فراخوانی کنید 
    App\Providers\FortifyServiceProvider
    
        :
    
use Laravel\Fortify\Fortify; /** * Bootstrap any application services. */public function boot(): void{    Fortify::verifyEmailView(function () {        return view('auth.verify-email');    });     // ...}
    /email/verify
    
        وقتی کاربر توسط میانافزار داخلی لاراول 
        به نقطه پایانی هدایت میشود، فورتفای مسیری را که این نمای را نشان میدهد، تعیین میکند 
    verified
    
        .
    
    
        الگوی شما 
    verify-email
    
        باید حاوی یک پیام اطلاعاتی باشد که به کاربر دستور می دهد روی پیوند تأیید ایمیلی که به آدرس ایمیل او ارسال شده است کلیک کند.
    
ارسال مجدد پیوندهای تایید ایمیل
    
        در صورت تمایل، می توانید دکمه ای را به 
    verify-email
    
        الگوی برنامه خود اضافه کنید که درخواست POST را به 
    /email/verification-notification
    
        نقطه پایانی راه اندازی می کند. هنگامی که این نقطه پایانی درخواستی را دریافت می کند، یک پیوند ایمیل تأیید جدید برای کاربر ایمیل می شود که به کاربر امکان می دهد اگر پیوند قبلی به طور تصادفی حذف یا گم شد، پیوند تأیید جدیدی دریافت کند.
    
    
        اگر درخواست ارسال مجدد ایمیل پیوند تأیید موفقیت آمیز بود، Fortify کاربر را 
    /email/verify
    
        با یک 
    status
    
        متغیر جلسه به نقطه پایانی هدایت می کند و به شما امکان می دهد یک پیام اطلاعاتی را برای کاربر نمایش دهید که به او اطلاع می دهد عملیات موفقیت آمیز بوده است. اگر درخواست یک درخواست XHR بود، یک پاسخ HTTP 202 برگردانده می شود:
    
@if (session('status') == 'verification-link-sent')    <div class="mb-4 font-medium text-sm text-green-600">        A new email verification link has been emailed to you!    </div>@endifحفاظت از مسیرها
    
        برای مشخص کردن اینکه یک مسیر یا گروهی از مسیرها نیاز دارد که کاربر آدرس ایمیل خود را تأیید کرده باشد، باید 
    verified
    
        میان افزار داخلی لاراول را به مسیر متصل کنید. نام 
    verified
    
        مستعار میان افزار به طور خودکار توسط لاراول ثبت می شود و به عنوان نام مستعار 
    Illuminate\Routing\Middleware\ValidateSignature
    
        میان افزار عمل می کند:
    
Route::get('/dashboard', function () {    // ...})->middleware(['verified']);تایید رمز عبور
    
        در حین ساخت برنامه خود، ممکن است گهگاه اقداماتی داشته باشید که باید کاربر را ملزم به تایید رمز عبور خود قبل از انجام عمل کند. به طور معمول، این مسیرها توسط میان افزار داخلی لاراول محافظت می شوند 
    password.confirm
    
        .
    
برای شروع اجرای عملکرد تأیید رمز عبور، باید به Fortify آموزش دهیم که چگونه نمای "تأیید رمز عبور" برنامه ما را بازگرداند. به یاد داشته باشید، Fortify یک کتابخانه احراز هویت بدون سر است. اگر میخواهید یک پیادهسازی frontend از ویژگیهای احراز هویت لاراول که قبلاً برای شما تکمیل شده است، داشته باشید، باید از یک کیت شروع برنامه استفاده کنید .
    
        تمام منطق رندر نمای Fortify ممکن است با استفاده از روش های مناسب موجود از طریق 
    Laravel\Fortify\Fortify
    
        کلاس سفارشی شود. به طور معمول، شما باید این متد را از 
    boot
    
        متد کلاس برنامه خود فراخوانی کنید 
    App\Providers\FortifyServiceProvider
    
        :
    
use Laravel\Fortify\Fortify; /** * Bootstrap any application services. */public function boot(): void{    Fortify::confirmPasswordView(function () {        return view('auth.confirm-password');    });     // ...}
    
        Fortify از تعریف نقطه پایانی که این نمای را برمی گرداند، مراقبت می کند 
    /user/confirm-password
    
        . الگوی 
        شما 
    confirm-password
    
        باید دارای فرمی باشد که درخواست POST را به 
    /user/confirm-password
    
        نقطه پایانی ارسال کند. نقطه پایانی فیلدی 
    /user/confirm-password
    
        را انتظار دارد 
    password
    
        که حاوی رمز عبور فعلی کاربر باشد.
    
اگر رمز عبور با رمز عبور فعلی کاربر مطابقت داشته باشد، Fortify کاربر را به مسیری که میخواست به آن دسترسی داشته باشد هدایت میکند. اگر درخواست یک درخواست XHR بود، یک پاسخ HTTP 201 برگردانده می شود.
    
        اگر درخواست موفقیت آمیز نبود، کاربر به صفحه تأیید رمز عبور هدایت می شود و خطاهای تأیید اعتبار از طریق 
    $errors
    
        متغیر الگوی Blade به اشتراک گذاشته شده در دسترس شما قرار می گیرد. یا در صورت درخواست XHR، خطاهای اعتبارسنجی با یک پاسخ HTTP 422 برگردانده می شود.