تأیید مجدد رمز عبور کاربران در لاراول ۶.۲
فریم ورک لاراول به تازگی یک ویژگی جدید به نسخه ۶.۲ خود اضافه کرده است که به شما امکان میدهد که بتوانید از کاربر درخواست کنید که در زمان دسترسی کاربر به یک مسیر خاص، به صورت مجدد رمز عبور خود را وارد کند.
استفاده از این روش زمانی مفید است که کاربر قصد انجام عملیاتی را داشته باشد که از حساسیت خاصی برخوردار هستند. پیاده سازی این عملیات در لاراول ۶ به راحتی امکان پذیر است. برای یادگیری بیشتر کار با این قایبلیت جدید لاراول، در ادامه این مقاله از لیداوب با ما همراه باشید.
تأیید مجدد رمز عبور کاربران در لاراول ۶.۲
ایجاد یک اپلیکیشن جدید
ابتدا، اجازه دهید یک برنامه جدید لاراول ایجاد کنیم تا بتوانیم نحوه عملکرد این ویژگی جدید در لاراول را پیاده سازی و مشاهده کنیم:
laravel new confirm-app
cd confirm-app
composer require laravel/ui --dev
همانطور که اطلاع دارید، دستور make: auth
در لاراول ۶ حذف شده و به پکیج laravel / ui
منتقل شده است. اجازه دهید کد authorization را برای برنامه خود به صورت زیر ایجاد کنیم:
php artisan ui vue --auth
yarn install
yarn dev
سپس، اجازه دهید پایگاه داده SQLite را پیکربندی کنیم (میتوانید از هر دایوری که میخواهید استفاده کنید):
touch database/database.sqlite
ما فایلی را ایجاد میکنیم که لاراول در هنگام استفاده از درایور sqlite به طور پیشفرض آن را جستجو میکند. همچنین، لازم است فایل .env
را نیز با مسیر صحیح کانکشن و پایگاه داده آپدیت کنیم:
DB_CONNECTION=sqlite
# ...
# Use the default path of the sqlite driver
سپس، اجازه دهید مایگریشنها را اجرا کرده و یک کاربر تستی نیز ایجاد کنیم:
php artisan migrate
ما میتوانیم با استفاده از کنسول و از طریق تابع factory()
یک کاربر تستی ایجاد کنیم:
php artisan tinker
>>> $user = factory(App\User::class)->create([
... 'password' => bcrypt('secret'),
... 'email' => '[email protected]'
... ]);
نوشتن کنترلرها
در واقع، چیزی که انتظار داریم این است که کاربران قبل از مشاهده اکشن مدیریت (administration) مانند عملیات اضافه کردن کلید SSH، دوباره رمزعبور خود را تایید کنند. ما میخواهیم کاربر رمز عبور خود را دوباره در پنجره پیکربندی شده وارد کند (زمان پیشفرض برای درخواست رمز عبور 3 ساعت است).
ما یک مسیر ساختگی /settings/ssh/create
ایجاد میکنیم که در آن به یک میدلور password.confirm
برای تایید مجدد رمز عبور قبل از ایجاد یک کلید جدید، نیاز خواهیم داشت:
php artisan make:controller Settings/SSHController
در مرحله بعد، باید یک اکشن كنترلر create()
نیز ایجاد کنیم:
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class SSHController extends Controller
{
public function create()
{
return view('secret');
}
}
میتوانیم از قالبی که در مسیر resources/views/secret.blade.php
قرار دارد، برای پیاده سازی این عملیات استفاده کنیم:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<h1>Add a New SSH Key</h1>
<p>This page is only shown after password confirmation.</p>
</div>
</div>
</div>
@endsection
در زمان نوشتن، باید فایل auth/passwords/confirm.blade.php
را برای پروژه خود کپی کنیم. میتوانید این قالب را از ui/confirm.stub
دریافت کنید. این فایل را کپی کنید و در مسیر زیر به پروژه خود اضافه کنید:
resources/views/auth/passwords/confirm.blade.php
در مرحله بعد، ما باید مسیر را به همراه میدلور در انتهای فایل routes/web.php
خود تعریف کنیم:
Route::namespace('Settings')
->middleware(['auth'])
->group(function () {
Route::get('/settings/ssh/create', '[email protected]')->middleware('password.confirm');
});
معمولا میتوانیم تمام مسیرهایی که نیاز به احراز هویت دارند را با میدلورauth
گروه بندی کنیم. در این دمو، ما یک مسیر کنترلر را در فضای نامیSettings
ایجاد میکنیم.
با این کار، پس از لاگین به سیستم، به مسیر /home
هدایت میشوید، از آنجا، باید به مسیر /settings/ssh/create
بروید و سپس از شما خواسته میشود که رمز عبور خود را مجددا وارد کنید:
با استفاده از تابع کمکی ddd()
، کد زیر را به متد HController::create()
اضافه کنید تا مقدار auth.password_confirmed_at session
که زمان دفعه بعدی که از شما درخواست رمز عبور میشود را تعیین کنید:
public function create()
{
ddd(session('auth'));
return view('secret');
}
این مقدار زمانی که کاربر اخرین بار میخواهد رمز عبور خود را وارد کند را تعیین میکند. به صورت پیشفرض، این میدلور به مدت سه ساعت مجدداً درخواست رمز عبور نمیکند. میتوانید با پیکربندی مقدار config('auth.password_timeout')
که در فایل configبهبود عملکرد Subqueryها در لاراول ۶ /auth.php
نسخه ۶.۲ لاراول قرار دارد، تعیین کنید که بعد از چه مدت زمانی کاربر باید دوباره رمز عبور خود را تأیید کند.
مقالات بیشتر در لیداوب:
مقاله آموزشی امروز نیز در اینجا به پایان میرسد. امیدوارم بتوانید از این قابلیت جدید در اپلیکیشنهای لاراول خود بهره ببرید. با سایر مقالات لاراول ما در لیداوب همراه باشید و سوالات و نظرات خودتان را در بخش دیدگاههای سایت با ما به اشتراک بگذارید.
دیدگاه ها
متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند
ورود به سایت