Blog Yazılarım

Laravel 6.2'de Oturum Açmış Kullanıcılar İçin Yeni Parola Doğrulama Sistemi

Laravel v6.2'yi piyasaya sundu; giriş yapmış bir kullanıcının bir rotaya erişime izin verilmeden önce şifresini tekrar girmesini gerektirecek.

Yeni bir şifre onayı özelliği ile hassas eylemler gerçekleştirdiğinizde GitHub onay ekranı gibi çalışır. Ayarlamak Laravel'de nasıl döndüğünüzü görebilmeniz için yeni özelliği ele alalım:

Kurulumu

Öncelikle, çalışacak yeni bir Laravel uygulaması oluşturalım, böylece bu yeni özelliğin nasıl çalıştığını görselleştirebilirsiniz:

laravel new confirm-app
cd confirm-app
composer require laravel/ui --dev
 Uygulamamız için yetki kodunu oluşturalım:
php artisan ui vue --auth
yarn install
yarn dev

Daha sonra bir SQLite veritabanını yapılandıralım (ama siz istediğiniz veri tabanı bağlantısını kullanabilirsiniz):
touch database/database.sqlite 

Veri tabanı bağlantısını kullanırken Laravel'in varsayılan olarak arayacağı dosyayı oluşturduk sqlite, ancak .envdosyayı doğru bağlantı ve veritabanı yoluyla güncellemeniz gerekecek :
DB_CONNECTION=sqlite
# ...
# Use the default path of the sqlite driver
# DB_DATABASE=laravel
 Sonra bir test kullanıcısı oluşturalım:
php artisan migrate
Konsolla bir test kullanıcısı oluşturabiliriz factory():
php artisan tinker
>>> $user = factory(App\User::class)->create([
... 'password' => bcrypt('secret'),
... 'email' => 'admin@example.com'
... ]);

Denetleyicileri Yazalım

Bir SSH anahtarı eklemek gibi bir yönetim eylemini görüntülemeden önce kullanıcıların şifrelerini yeniden doğrulamalarını istediğinizi varsayalım. Kullanıcının yapılandırılan pencerede şifresini tekrar girmesini isteriz (varsayılan 3 saattir).

Kullanıcı yeni bir anahtar oluşturmadan önce /settings/ssh/createyeni password.confirm middleware yazılımını için bir rota oluşturacağız:

php artisan make:controller Settings/SSHController
Ardından, denetleyici eylemini oluşturun
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 açıyoruz:
@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
Yazma sırasında auth/passwords/confirm.blade.php dosyasını projenize kopyalamanız gerekir Buradan alabilirsiniz: ui / confirm.stub . Bu dosyayı kopyalayın ve aşağıdaki şekilde projenize ekleyin:
resources/views/auth/passwords/confirm.blade.php
Daha sonra, routes/web.php dosyasını tanımlamanız için ihtiyaç duyacağımız middleware yazılımı ile birlikte rotayı tanımlamamız gerekir :
Route::namespace('Settings')
    ->middleware(['auth'])
    ->group(function () {
        Route::get('/settings/ssh/create', 'SSHController@create')->middleware('password.confirm');
    });
Bunun ile bir kez giriş yaptığınızda home sayfasına yönlendirileceksiniz ve ardından şifrenizi girmeniz isteniz :


Bunun ile birlikte takip ettiyseniz secret, formundan sonra  create görünüme yönlendirilirsiniz. Şifreyi onayladıktan sonra sorulmadan bu sayfayı yenileyebilirsiniz.

New ddd () Helper'ı kullanarak, bir sonraki seferde istenecek SSHController::create()olan auth.password_confirmed_atoturum değerini görselleştirmek için bu yöntemi kendi yönteminize ekleyin :

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


 Sürüm v6.2.0'da config('auth.password_timeout') yer alan değerle şifreyi tekrar onaylaması ne kadar süre önce kontrol edebilirsiniz .config/auth.php



Bu yazıyı paylaş

Yorumlar (0)

Yorum Yap