Laravel Framework တွင် Session သည်အသုံးပြုသူအစည်းအဝေးကိုစီမံခန့်ခွဲခြင်း၏အရေးကြီးသောအပိုင်းဖြစ်သည်။ ပုံမှန်အားဖြင့် Laravel သည် Session IDS ကိုဖန်တီးရန်နှင့်စီမံရန်အတွက်၎င်း၏ကိုယ်ပိုင်အဆင့်ယာဉ်မောင်းကိုအသုံးပြုသည်။
ဤဆောင်းပါးသည် SessionItFace ရှိ Peachace ရှိ Laravel တွင် Laravel ရှိ Create_SID နည်းလမ်းကိုအသေးစိတ်ရှင်းပြရန်အသေးစိတ်စီမံကိန်းလိုအပ်ချက်များနှင့်တွေ့ဆုံရန်။
SessionInterface ဆိုသည်မှာ PHP Session Extension တွင် Create_sid () နည်းလမ်းကို session id အသစ်တစ်ခုကိုထုတ်လုပ်ရန်အသုံးပြုသော PHP session extension တွင်သတ်မှတ်ထားသော interface တစ်ခုဖြစ်သည်။ ပုံမှန်အားဖြင့် PHP သည် Session ID ကိုထုတ်လုပ်ရန်အတွက်၎င်း၏ built-in algorithm ကိုအသုံးပြုလိမ့်မည်,
Laravel 5.6 နှင့်အထက်ပါအစိတ်အပိုင်းများအထက်ပါအစိတ်အပိုင်းများကို Symfony ၏ HttpFoundation အပေါ်အခြေခံသည်။ ထို့ကြောင့်သူတို့၏ session processing ယန္တရားသည်လည်း symfony နှင့်လည်းလိုက်ဖက်သည်။ ကျွန်ုပ်တို့၏ကိုယ်ပိုင် Session ID Generator ကိုအကောင်အထည်ဖော်ရန်၎င်းကိုကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။
စိတ်ကြိုက် Session ID Generator Class ကိုဖန်တီးပါ
<?php
namespace App\Session;
use SessionIdInterface;
class CustomSessionIdGenerator implements SessionIdInterface
{
/**
* ထုံးစံကို generate Session ID
*
* @return string
*/
public function create_sid()
{
// ဤတွင်စီမံကိန်းလိုအပ်ချက်များအရမျိုးဆက်များစည်းမျဉ်းများကိုသင်စိတ်ကြိုက်ပြုလုပ်နိုင်သည်,ဥပမာအားဖြင့်:
// 1. အားကောင်းတဲ့ကျပန်း algorithms ကိုသုံးပါ
// 2. တိကျသောရှေ့ဆက်သို့မဟုတ် timestamp ပါရှိသည်
// 3. ပြင်ပပေါင်းစပ်IDဝန်ဆောင်မှုများကိုထုတ်လုပ်ပါ
// နမူနာ:မျိုးဆက်အရှည်သည်40ကျပန်းကြိုး,timestamp ရှေ့ဆက်ပါဝင်သည်
return 'sid_' . time() . '_' . bin2hex(random_bytes(16));
}
}
ဤဥပမာတွင်ကျွန်ုပ်တို့သည် timestamp prefix နှင့်ကျပန်း bytes ဖြင့် Session ID ကိုသတ်မှတ်သည်။ သင်မျိုးဆက်ဆိုင်ရာယုတ္တိဗေဒကိုလိုအပ်သလိုစိတ်ကြိုက်ပြုပြင်နိုင်သည်။
Laravel သည် PHP ၏ built-in session စီမံခန့်ခွဲမှုကိုပုံမှန်အားဖြင့်အသုံးပြုသည်။ ထို့ကြောင့်ကျွန်ုပ်တို့သည် Session ID မျိုးထုတ်လုပ်မှုယုတ္တိဗေဒကိုအစားထိုးရန် (သို့) overize လုပ်ရန် Laravel ၏ 0 န်ဆောင်မှုကွန်တိန်နာနှင့်ရေနစ်မြုပ်မှုကိုအသုံးပြုရန်လိုအပ်သည်။
စိတ်ကြိုက် Session ID Generator ကိုမှတ်ပုံတင်ပါ
Laravel's Service Provider မှတစ်ဆင့်ကျွန်ုပ်တို့သည်စည်းနှောင်မှုကိုဖြည့်စွက်နိုင်သည်။
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Session\CustomSessionIdGenerator;
use SessionIdInterface;
class SessionServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton(SessionIdInterface::class, function ($app) {
return new CustomSessionIdGenerator();
});
}
public function boot()
{
//
}
}
0 န်ဆောင်မှုပေးသူအား config / app တွင် 0 န် ဆောင်မှုပေးသူ တွင်မှတ်ပုံတင်ပါ။
App\Providers\SessionServiceProvider::class,
session မစတင်မီ Custom Logic Apply Apply
Laravel သည်စိတ်ကြိုက် session ID ကိုအသုံးပြုသည်ကိုသေချာစေရန် sessionidface အကောင်အထည်ဖော်မှုကို PHP session processing mineism တွင်စတင်ရန်လိုအပ်သည်။ ၎င်းကို middleware တွင်ပြုလုပ်နိုင်သည်။
<?php
namespace App\Http\Middleware;
use Closure;
use SessionIdInterface;
class CustomSessionIdMiddleware
{
protected $sidGenerator;
public function __construct(SessionIdInterface $sidGenerator)
{
$this->sidGenerator = $sidGenerator;
}
public function handle($request, Closure $next)
{
// ထုံးစံသတ်မှတ် session id functions များကိုထုတ်လုပ်သည်
if (session_status() === PHP_SESSION_NONE) {
session_id($this->sidGenerator->create_sid());
}
return $next($request);
}
}
ဒီအိုင်အလာကို app / http / kernele.php ၏ webware group ထဲသို့ iteware သို့မှတ်ပုံတင်ပါ။
protected $middlewareGroups = [
'web' => [
// အခြားအချိုးအစား...
\App\Http\Middleware\CustomSessionIdMiddleware::class,
],
];
Security : Session ID သည်အသုံးပြုသူမည်သူမည်ဝါဖြစ်ကြောင်းလုံခြုံရေးနှင့်တိုက်ရိုက်ဆက်နွှယ်သည်။ မျိုးဆက်ဆိုင်ရာစည်းမျဉ်းစည်းကမ်းများကိုစိတ်ကြိုက်ပြုပြင်သည့်အခါတိုက်ခိုက်သူများကခန့်မှန်းခြင်းခံရခြင်းသို့မဟုတ်အတုယူခြင်းကိုရှောင်ရှားရန်ကျပန်းနှင့်ကြိုတင်ခန့်မှန်းနိုင်မှုကိုသေချာအောင်ပြုလုပ်ရမည်။
သဟဇာတ - ဖြန့်ဝေထားသော session သိုလှောင်မှုသိုလှောင်မှု (redis, database စသဖြင့်) ကိုအသုံးပြုနေပါကစိတ်ကြိုက် session id format ကိုသိုလှောင်ခြင်းနှင့်ပြန်လည်ရယူခြင်းယန္တရားများနှင့်သဟဇာတဖြစ်အောင်သေချာအောင်လုပ်ပါ။
စမ်းသပ်မှု - စိတ်ကြိုက်ပြုပြင်ပြီးတဲ့နောက်မှာစနစ်ရဲ့ပုံမှန်လည်ပတ်မှုကိုအကျိုးသက်ရောက်စေမှာမဟုတ်ဘူးဆိုတာသေချာအောင်လုပ်ပါ။
sessionidface ကိုအကောင်အထည်ဖော်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် Cree_SID နည်းလမ်းကိုအကောင်အထည်ဖော်ခြင်းအားဖြင့် Laravel applications များတွင် Sessuration id id ၏မျိုးဆက်ဆိုင်ရာစည်းမျဉ်းစည်းကမ်းများကိုအထူးစီမံကိန်းလိုအပ်ချက်များနှင့်တွေ့ဆုံရန်စိတ်ကြိုက်ပြုပြင်နိုင်သည်။ အဓိကအဆင့်များမှာ -
SessionITInterface ကို အကောင်အထည်ဖော်ရန်စိတ်ကြိုက် session id Generator ကိုရေးပါ။
ဤအကောင်အထည်ဖော်မှုသည် 0 န်ဆောင်မှုပေးသူမှတစ်ဆင့်ချည်နှောင်ထားသည်။
session မစတင်မီစိတ်ကြိုက် session တစ်ခုထိုးသွင်းရန် monthedware ကိုသုံးပါ။
ဤချဉ်းကပ်နည်းသည် Laravel နှင့် PHP တို့၏ပမာဏကိုအသုံး 0 င်နိုင်မှု၏အကျိုးကျေးဇူးကိုသာအသုံးချနိုင်သော်လည်း Session စီမံခန့်ခွဲမှု၏လုံခြုံရေးနှင့်ပြောင်းလွယ်ပြင်လွယ်မှုကိုလည်းသေချာစေသည်။