ویرگول
ورودثبت نام
علی نیستانی
علی نیستانیاگر نیاز به برنامه نویسی اپلیکیشن موبایل از نوع اندروید یا iOS دارید.. اگر نیاز به هر نوع وبسایت یا وب اپلیکیشنی دارید.. اگر قصد آنلاین کردن کسب و کارتون رو دارید با من تماس بگیرید 09128182951
علی نیستانی
علی نیستانی
خواندن ۱ دقیقه·۷ سال پیش

تغییر سیستم هشینگ لاراول

در قراردادی که این اواخر با یک مشتری داشتیم قرار بود پروژه ای که قبلا با کدایگنایتر نوشته شده بود رو با لاراول 5.8 ریفکتور کنیم. مشکلی که وجود داشت دیتابیس چند ده هزار رکوردی بود که باید به سیستم جدید انتقال پیدا میکرد. همونطور که میدونید کدایگنایتر از یک متد ساده برای هشینگ پسورد با عنوان sha1 استفاده میکنه. این در حالیه که لاراول برای هشینگ از متد قدرتمند bycrypt استفاده میکنه.

در هر صورت آموزش رو میتونیم با عنوان زیر هم دنبال کنیم:

آموزش تغییر متد هشینگ لاراول از bycrypt به sha1

اگر تا به حال به providers در فایل app.php در پوشه ی کانفیگ لاراول دقت کرده باشید یک provider با عنوان Illuminate\Hashing\HashServiceProvider::class داریم که مسوول هشینگ لاراول هست. پس برای تغییر متد هشینگ لاراول کافیه ما یک provider مشابه بنویسیم و اون رو با provider فعلی جایگزین کنیم.

برای این کار در پروژمون یک کلاس ایجاد میکنیم. من این کلاس رو با عنوان ShaHashing در پوشه ای با نام Sh4Classes می سازم. دقت کنید ما باید این کلاس رو از اینترفیس Hasher پیاده سازی کنیم. اگر از phpstorm استفاده میکنید با فشردن alt + enter متدها به صورت اتوماتیک بر اساس interface به کلاس ما اضافه میشند. حالا کافیه ما متد هشینگمون رو در این کلاس اضافه کنیم. من این کار رو از روی خود کلاس لاراول تقلب کردم.

<?php /** * Created by PhpStorm. * User: sh4rifi@gmail.com * Date: 6/11/19 * Time: 4:52 PM */ namespace App\Sh4Classes; use Illuminate\Contracts\Hashing\Hasher as HashingContract; class ShaHashing implements HashingContract { public function make($value, array $options = array()) { $value = env('SALT', '').$value; return sha1($value); } public function check($value, $hashedValue, array $options = array()) { return $this->make($value) === $hashedValue; } public function needsRehash($hashedValue, array $options = array()) { return false; } public function info($hashedValue) { // TODO: Implement info() method. } }



خب حالا کافیه ما این کلاس رو به صورت provider جایگزین provider قبلی کنیم. در نتیجه یک provider می سازیم:

php artisan make:provider ShaHashServiceProvider

حالا وارد service provider ساخته شده بشید و کلاس خودتون رو به صورت زیر رجیستر کنید.

$this->app->singleton('hash', function() { return new ShaHashing(); });
hashingلاراولکدایگنایتر
۰
۰
علی نیستانی
علی نیستانی
اگر نیاز به برنامه نویسی اپلیکیشن موبایل از نوع اندروید یا iOS دارید.. اگر نیاز به هر نوع وبسایت یا وب اپلیکیشنی دارید.. اگر قصد آنلاین کردن کسب و کارتون رو دارید با من تماس بگیرید 09128182951
شاید از این پست‌ها خوشتان بیاید