亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Laravel中的Sessionid處理機(jī)制詳解

 更新時(shí)間:2017年09月12日 08:30:25   作者:小談  
這篇文章主要給大家介紹了關(guān)于Laravel中Sessionid處理機(jī)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。

前言

本文主要給大家介紹了關(guān)于Laravel中Sessionid處理機(jī)制的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

在 Laravel 的配置文件 config/session.php 中可以設(shè)置 Session Cookie Name,比如這個(gè)項(xiàng)目中設(shè)置名稱為“sns_session”:

/*
|--------------------------------------------------------------------------
| Session Cookie Name
|--------------------------------------------------------------------------
|
| Here you may change the name of the cookie used to identify a session
| instance by ID. The name specified here will get used every time a
| new session cookie is created by the framework for every driver.
|
*/
 
'cookie' => 'sns_session',

我們可以看到刷新頁(yè)面,查看 cookie,會(huì)發(fā)現(xiàn)一個(gè)名稱為 sns_session 的 cookie,名字就是我們自定義的。

這個(gè) sessionid 就是 cookie 和 session 聯(lián)系的橋梁,服務(wù)器通過(guò)這個(gè) sessionid 判斷來(lái)自哪個(gè)客戶端的請(qǐng)求。

Laravel 的 sessionid 每次刷新發(fā)生變化

但是,每次刷新頁(yè)面,這個(gè) cookie 值都會(huì)發(fā)生改變!那么這樣服務(wù)器如何保持會(huì)話呢?因?yàn)槟愕?sessionid 總是在變。

Laravel 對(duì) cookie 進(jìn)行加密

我們?cè)?vendor/laravel/framework/src/Illuminate/Session/Store.php 的 save 方法中調(diào)試一下,打印一下這里的調(diào)用棧:

/**
 * {@inheritdoc}
 */
public function save()
{
 $this->addBagDataToSession();
 
 $this->ageFlashData();
 
 $this->handler->write($this->getId(), $this->prepareForStorage(serialize($this->attributes)));
 
 $this->started = false;
 
 dd(debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT,5));
}

每次刷新頁(yè)面,這個(gè) Store 對(duì)象的 id 屬性其實(shí)是沒有變化的,這個(gè)屬性就是 sessionid 這個(gè) cookie 的值。也就是說(shuō),sessionid 的值并不是每次發(fā)生變化,而是寫 cookie 的時(shí)候,值發(fā)生了變化。

在 vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php 中的 encrypt 方法找到了原因,這個(gè)中間件對(duì)所有 cookie 值進(jìn)行了加密處理,它被包含在 web 中間件。

protected function encrypt(Response $response)
{
 foreach ($response->headers->getCookies() as $cookie) {
 if ($this->isDisabled($cookie->getName())) {
  continue;
 }
 
 $response->headers->setCookie($this->duplicate(
  $cookie, $this->encrypter->encrypt($cookie->getValue())
 ));
 }
 return $response;
}

而這種加密方式是每次加密的結(jié)果都不同,所以表現(xiàn)為 sessionid 的值每次都發(fā)生了變化,而實(shí)際上并沒有改變。在需要用到這個(gè) cookie 的時(shí)候會(huì)被解密回去。

Laravel 框架這樣設(shè)計(jì)的目的可能是為了防止 session 劫持吧!考慮還是比較全面的!

其他補(bǔ)充知識(shí)

原生 PHP 設(shè)置 session 名稱

session_name() 函數(shù):

<?php
 
/* 設(shè)置會(huì)話名稱為 WebsiteID */
 
$previous_name = session_name("WebsiteID");
 
echo "The previous session name was $previous_name<br />";
?>

session_name() 函數(shù)返回當(dāng)前會(huì)話名稱。 如果指定 name 參數(shù), session_name() 函數(shù)會(huì)更新會(huì)話名稱, 并返回 原來(lái)的 會(huì)話名稱。

請(qǐng)求開始的時(shí)候,會(huì)話名稱會(huì)被重置并且存儲(chǔ)到 session.name 配置項(xiàng)。 因此,要想設(shè)置會(huì)話名稱,那么對(duì)于每個(gè)請(qǐng)求,都需要在 調(diào)用 session_start() 或者 session_register() 函數(shù) 之前調(diào)用 session_name() 函數(shù)。

COOKIE和SESSION的區(qū)別和關(guān)系

  • COOKIE保存在客戶端,而SESSION則保存在服務(wù)器端
  • 從安全性來(lái)講,SESSION的安全性更高
  • 從保存內(nèi)容的類型的角度來(lái)講,COOKIE只保存字符串(及能夠自動(dòng)轉(zhuǎn)換成字符串)
  • 從保存內(nèi)容的大小來(lái)看,COOKIE保存的內(nèi)容是有限的,比較小,而SESSION基本上沒有這個(gè)限制
  • 從性能的角度來(lái)講,用SESSION的話,對(duì)服務(wù)器的壓力會(huì)更大一些
  • SEEION依賴于COOKIE,但如果禁用COOKIE,也可以通過(guò)url傳遞

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • thinkphp學(xué)習(xí)筆記之多表查詢

    thinkphp學(xué)習(xí)筆記之多表查詢

    在學(xué)習(xí)thinkphp 的過(guò)程中,需要對(duì)多表進(jìn)行操作,但是在實(shí)際過(guò)程中,總是遇到各種問(wèn)題,所以寫下這篇文章,作為自己的學(xué)習(xí)歷程
    2014-07-07
  • Laravel框架使用Seeder實(shí)現(xiàn)自動(dòng)填充數(shù)據(jù)功能

    Laravel框架使用Seeder實(shí)現(xiàn)自動(dòng)填充數(shù)據(jù)功能

    這篇文章主要介紹了Laravel框架使用Seeder實(shí)現(xiàn)自動(dòng)填充數(shù)據(jù)功能,結(jié)合實(shí)例形式分析了Laravel基于Seeder類實(shí)現(xiàn)自動(dòng)填充數(shù)據(jù)的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-06-06
  • 用PHP實(shí)現(xiàn)的服務(wù)端socket具體實(shí)例

    用PHP實(shí)現(xiàn)的服務(wù)端socket具體實(shí)例

    這篇文章主要介紹了用PHP實(shí)現(xiàn)的服務(wù)端socket具體實(shí)例,有對(duì)這方面不懂的同學(xué)可以參考下
    2021-01-01
  • Laravel 5.5中為響應(yīng)請(qǐng)求提供的可響應(yīng)接口詳解

    Laravel 5.5中為響應(yīng)請(qǐng)求提供的可響應(yīng)接口詳解

    這篇文章主要給大家介紹了關(guān)于Laravel 5.5中為響應(yīng)請(qǐng)求提供的可響應(yīng)接口的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • 解析PHP中Exception異常機(jī)制

    解析PHP中Exception異常機(jī)制

    這篇文章主要介紹了解析PHP中Exception異常機(jī)制,本文通過(guò)異常的基本使用和一些常用的異常使用案例來(lái)解析說(shuō)明該項(xiàng)概念,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • PHP 9 大緩存技術(shù)總結(jié)

    PHP 9 大緩存技術(shù)總結(jié)

    也就是將頁(yè)面全部生成html靜態(tài)頁(yè)面,用戶訪問(wèn)時(shí)直接訪問(wèn)的靜態(tài)頁(yè)面,而不會(huì)去走php服務(wù)器解析的流程。此種方式,在CMS系統(tǒng)中比較常見,比如dedecms,下面通過(guò)本文給大家分享了php9大緩存技術(shù)總結(jié),需要的朋友可以參考下
    2015-09-09
  • YII2框架中添加自定義模塊的方法實(shí)例分析

    YII2框架中添加自定義模塊的方法實(shí)例分析

    這篇文章主要介紹了YII2框架中添加自定義模塊的方法,結(jié)合實(shí)例形式分析了YII2添加自定義模塊的原理、步驟、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • PHP二維數(shù)組矩形轉(zhuǎn)置實(shí)例

    PHP二維數(shù)組矩形轉(zhuǎn)置實(shí)例

    下面小編就為大家?guī)?lái)一篇PHP二維數(shù)組矩形轉(zhuǎn)置實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • PHP實(shí)現(xiàn)留言板功能的詳細(xì)代碼

    PHP實(shí)現(xiàn)留言板功能的詳細(xì)代碼

    這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)留言板功能的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • thinkphp5redis緩存新增方法實(shí)例講解

    thinkphp5redis緩存新增方法實(shí)例講解

    這篇文章主要介紹了thinkphp5redis緩存新增方法實(shí)例講解,redis是項(xiàng)目中最常用的緩存,有正在使用的同學(xué)可以看下
    2021-03-03

最新評(píng)論