واگذاری مالیک دامنه
، محتوا و سورس
وب سایت
لیداوب
   در حال بارگزاری ...

تأیید مجدد رمز عبور کاربران در لاراول ۶.۲

توسط الهه قنبری
آخرین به روز رسانی سه شنبه 06 اسفند 1398

فریم ورک لاراول به تازگی یک ویژگی جدید به نسخه ۶.۲ خود اضافه کرده است که به شما امکان می‌دهد که بتوانید از کاربر درخواست کنید که در زمان دسترسی کاربر به یک مسیر خاص، به صورت مجدد رمز عبور خود را وارد کند.

استفاده از این روش زمانی مفید است که کاربر قصد انجام عملیاتی را داشته باشد که از حساسیت خاصی برخوردار هستند. پیاده سازی این عملیات در لاراول ۶ به راحتی امکان پذیر است. برای یادگیری بیشتر کار با این قایبلیت جدید لاراول، در ادامه این مقاله از لیداوب با ما همراه باشید.

تأیید مجدد رمز عبور کاربران در لاراول ۶.۲

ایجاد یک اپلیکیشن جدید

ابتدا، اجازه دهید یک برنامه جدید لاراول ایجاد کنیم تا بتوانیم نحوه عملکرد این ویژگی جدید در لاراول را پیاده سازی و مشاهده کنیم:

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' => 'admin@example.com'
... ]);

نوشتن کنترلرها

در واقع، چیزی که انتظار داریم این است که کاربران قبل از مشاهده اکشن مدیریت (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', 'SSHController@create')->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 نسخه ۶.۲ لاراول قرار دارد، تعیین کنید که بعد از چه مدت زمانی کاربر باید دوباره رمز عبور خود را تأیید کند.

مقالات بیشتر در لیداوب:

مقاله آموزشی امروز نیز در اینجا به پایان می‌رسد. امیدوارم بتوانید از این قابلیت جدید در اپلیکیشن‌های لاراول خود بهره ببرید. با سایر مقالات لاراول ما در لیداوب همراه باشید و سوالات و نظرات خودتان را در بخش دیدگاه‌های سایت با ما به اشتراک بگذارید.

 

دیدگاه ها

دیدگاه ها : 0


متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند

رایگان

اشتراک گذاری در
ثبت امتیاز
5 (1 رای)

   لطفا صبر کنید ...