درحال بارگذاری

لاراول 6.2 و یک روش جدید برای احراز هویت و جریان تایید کاربر با درخواست تایید رمز ورود

تاریخ: پنجشنبه, 18 مهر 1398

نویسنده: مصطفی دربان حسینی... بازیدها: 581 - نظرات : 0 دسته بندی: برنامه نویسی


به تازگی لاراول 6.2 با یک امکان جدید در قسمت تایید رمز ورود منتشر شده است. این ویژگی به شما این امکان را می دهد که قبل از اجازه دسترسی به یک مسیر به یک کاربر که لاگین کرده است از او درخواست کنید که رمز عبور خود را دوباره ورد نماید.

این عملکرد در بسیاری از سایت ها در حال استفاده است برای مثال می توان سایت گیت هاب را مثال زد. اما اگر بخواهید این ویژگی را استفاده کنید باید به شکل زیر با آن کار کنید:

ستاپ (Setup):

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

composer create-project --prefer-dist laravel/laravel confirm-app
cd confirm-app
composer require laravel/ui --dev

در مقالات قبلی روش استفاده و ایجاد لاگین در نسخه جدید لاراول 6 را برای شما توضیح داده ایم که می توانید برای یادآوری آن مطلب را مطالعه کنید.

خب حالا بیایید یک کد مجوز را برای پروژه خود ایجاد کنیم:

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
# DB_DATABASE=laravel

خب در ادامه دستور migration را اجرا میکنیم و در ادامه یک کاربر ایجاد می کنیم:

php artisan migrate

به کمک دستور factory() یک کاربر تستی ایجاد می کنیم:

php artisan tinker
>>> $user = factory(App\User::class)->create([
... 'password' => bcrypt('secret'),
... 'email' => 'admin@example.com'
... ]);

ایجاد کردن کنترلر ها:

بیایید فرض کنیم که شما می خواهید کاربران قبل از مشاهده عملکرد مدیریتی مانند اضافه کردن کلید SSH ، دوباره رمزعبور خود را تأیید کنند. ما می خواهیم کاربر رمز عبور خود را دوباره در پنجره پیکربندی شده وارد کند (پیش فرض 3 ساعت است).

حالا ما یک روت (route) جعلی (fake) با مسیر /settings/ssh/create ایجاد می کنیم که در این مسیر به تایید رمز (درخواست رمز) نیاز باشد. در این صورت قبل از اینکه کاربر بتواند یک کلید جدید تعریف کند نیاز است رمز خود را تایید کند:

php artisan make:controller Settings/SSHController

در ادامه یک متد (اکشن ،عمل) برای کنترلر ایجاد می کنیم. همانند زیر:

namespace App\Http\Controllers\Settings;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class SSHController extends Controller
{
    public function create()
    {
        return view('secret');
    }
}

در ادامه یک قالب ایجاد می کنیم و آن را در ریشه ی view قرار می دهیم. به این شکل 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');
    });

توجه: به طور معمول ، شما می توانید تمام مسیرهایی را که به مسیر تأیید اعتبار (تایید رمز) احتیاج دارند ، گروه بندی کنید. برای این منظور و به شکل نمایشی ، ما با استفاده از یک مسیر کنترل کننده در فضای نام (namespace) تنظیمات (Settings) ایجاد می کنیم

با این کار شما بعد از لاگین کردن به آدرس خانه (/home) منتقل می شوید. سپس از آنجا به مسیر /settings/ssh/create بروید و خواهید دید که از صفحه درخواست تایید رمز نمایش داده خواهد شد و از شما می خواهد با رمز خود عملیات تایید اعتبار را انجام دهید.

اگر شما این آموزش را کامل و به درستی دنبال کرده باشید نیاز است رمز را وارد کنید و فرم را تایید و ارسال کنید. سپس بعد از تایید رمز درصورت رفرش دوباره یا درخواست دوباره این آدرس شما نیاز به تایید دوباره نخواهید داشت.

با استفاده از helper جدید ddd() در SSHController::create() می توانید مشخص کنید تا جلسه کاری شما به چه شکلی باشد و چه زمانی دوباره درخواست تایید انجام شود:

public function create()
{
    ddd(session('auth'));
    return view('secret');
}

این مقدار زمانی را که تایید انجام شده است را به شکل محرمانه نگهداری می کند و نشان می دهد و به شکل پیشفرض 3 ساعت است. از طریق تغییر مقدار config('auth.password_timeout') می توانید مشخص کنید تا چه زمانی از کابر تایید دوباره درخواست نشود (یا بعد از چه مدت زمان دوباره تایید رمز درخواست شود). برای جزییات بیشتر به آدرس زیر مراجعه کنید:

لاراول Release v6.2.0.

نظر شما چیست؟ شما می توانید نظرات ،پیشنهادات و اطلاعات خود را در رابطه با این مطلب و موضوعات مربوط از طریق قسمت نظرات با ما و سایر بازدیدکنندگان در میان بگذارید.


نویسنده: مصطفی دربان حسینی... بازیدها: 581 - نظرات : 0 دسته بندی: برنامه نویسی

جستجو
کلاس برتر
ارائه دهنده بهترین و به روز ترین ویدیو های و مقالات آموزشی و همچنین مقالات مختلف در رابطه با تکنولوژی ،معماری ،مدیریت و سایر رشته های کاربردی.ما برای شما بهترین ها را میخواهیم.

سایر خدمات مجموعهخدمات زیر تحت مدیریت برد تخصصی ارائه می شود.
طراحی وب سایت
راه اندازی و پشتیبانی شبکه
هوشمند سازی منازل
افزایش کارایی نیرو انسانی
تعمیرات دستگاه های الکترونیکی
طراحی داخلی
تبلیغات فضای مجازی
برنامه نویسی