成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Laravel Sessionid 處理機(jī)制

BWrong / 718人閱讀

摘要:在的配置文件中可以設(shè)置,比如這個(gè)項(xiàng)目中設(shè)置名稱為我們可以看到刷新頁(yè)面,查看,會(huì)發(fā)現(xiàn)一個(gè)名稱為的,名字就是我們自定義的。而這種加密方式是每次加密的結(jié)果都不同,所以表現(xiàn)為的值每次都發(fā)生了變化,而實(shí)際上并沒(méi)有改變。

在 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 總是在變。

我們?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í)是沒(méi)有變化的,這個(gè)屬性就是 sessionid 這個(gè) cookie 的值。也就是說(shuō),sessionid 的值并不是每次發(fā)生變化,而是寫 cookie 的時(shí)候,值發(fā)生了變化。

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

在 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í)際上并沒(méi)有改變。在需要用到這個(gè) cookie 的時(shí)候會(huì)被解密回去。

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

其他補(bǔ)充知識(shí) 原生 PHP 設(shè)置 session 名稱

session_name() 函數(shù):

";
?>

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

請(qǐng)求開(kāi)始的時(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基本上沒(méi)有這個(gè)限制

從性能的角度來(lái)講,用SESSION的話,對(duì)服務(wù)器的壓力會(huì)更大一些

SEEION依賴于COOKIE,但如果禁用COOKIE,也可以通過(guò)url傳遞

(本文為小談博客原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處!原文地址:https://blog.tanteng.me/2017/...)


大家好,我的新課程《圖解HTTP精華解讀》開(kāi)始報(bào)名了

報(bào)名地址:https://segmentfault.com/l/15...

本次課程內(nèi)容是對(duì)《圖解HTTP》這本書的精華解讀,無(wú)論你是否讀過(guò)這本書,我們可以一起全面梳理一下關(guān)于 HTTP 的知識(shí)點(diǎn)。

課程目標(biāo)

不僅是對(duì)這本書的知識(shí)總結(jié),同時(shí)也會(huì)結(jié)合工作和個(gè)人理解從不同角度講解 HTTP 的知識(shí),重點(diǎn)補(bǔ)充 websocket 的應(yīng)用以及 HTTP/2 的介紹

面向人群

希望加深對(duì) HTTP 協(xié)議了解的人,或全面梳理復(fù)習(xí) HTTP 知識(shí)點(diǎn)的人

難度級(jí)別

理解比較簡(jiǎn)單,但知識(shí)點(diǎn)很多,內(nèi)容很重要

主要內(nèi)容

從輸入 URL 到頁(yè)面展示的過(guò)程發(fā)生了什么?

HTTP 協(xié)議基礎(chǔ)(無(wú)狀態(tài),持久連接,報(bào)文,狀態(tài)碼,Cookie等)

為什么使用 HTTPS?HTTP 的缺點(diǎn)和不足

WEB 安全防范(防注入,CSRF 攻擊及原理)

websocket 原理

簡(jiǎn)單演示 websocket 服務(wù)端搭建和客戶端交互過(guò)程

HTTP/2 介紹

讓我們一起開(kāi)啟 HTTP 之旅!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/25807.html

相關(guān)文章

  • session和cookie機(jī)制laravel框架下相關(guān)應(yīng)用

    摘要:服務(wù)器檢查該,以此來(lái)辨認(rèn)用戶狀態(tài)。五下的相關(guān)應(yīng)用應(yīng)用在中配置如下配置項(xiàng)用于設(shè)置存儲(chǔ)方式,默認(rèn)是,即存儲(chǔ)在文件中,該文件位于配置項(xiàng)配置的路徑,即。配置項(xiàng)用于設(shè)置有效期,默認(rèn)為分鐘。配置項(xiàng)用于配置數(shù)據(jù)是否加密。 一、cookie的由來(lái) ??當(dāng)用戶訪問(wèn)某網(wǎng)站時(shí),web服務(wù)器會(huì)將部分信息保存到本地計(jì)算機(jī)上,當(dāng)用戶再次關(guān)顧該網(wǎng)站時(shí),服務(wù)器會(huì)去查看用戶是否登錄過(guò)該網(wǎng)站,如果登錄過(guò),就會(huì)將這些記錄在...

    NicolasHe 評(píng)論0 收藏0
  • Laravel深入學(xué)習(xí)11 - 接口分離原則

    摘要:實(shí)際上,本原則要求接口必須是粒度明確的。當(dāng)你的代碼不符合接口分離原則時(shí),那也肯定違背了單一責(zé)任原則。接口分離原則本原則是指在實(shí)現(xiàn)類中對(duì)于接口中的方法并不強(qiáng)制去實(shí)現(xiàn)使用不到的方法。 聲明:本文并非博主原創(chuàng),而是來(lái)自對(duì)《Laravel 4 From Apprentice to Artisan》閱讀的翻譯和理解,當(dāng)然也不是原汁原味的翻譯,能保證90%的原汁性,另外因?yàn)槭抢斫夥g,肯定會(huì)有錯(cuò)誤...

    lwx12525 評(píng)論0 收藏0
  • Laravel深入學(xué)習(xí)7 - 框架的擴(kuò)展

    摘要:組件擴(kuò)展通常有兩種方法向容器中綁定自己的接口實(shí)現(xiàn)痛過(guò)使用工廠模式實(shí)現(xiàn)的類注冊(cè)自己的擴(kuò)展。類庫(kù)管理類以工廠模式實(shí)現(xiàn),負(fù)責(zé)諸如緩存等驅(qū)動(dòng)的實(shí)例化。閉包須要傳入繼承自和容器的實(shí)例化對(duì)象。當(dāng)完成擴(kuò)展之后要記住中替換成自己的擴(kuò)展名稱。 聲明:本文并非博主原創(chuàng),而是來(lái)自對(duì)《Laravel 4 From Apprentice to Artisan》閱讀的翻譯和理解,當(dāng)然也不是原汁原味的翻譯,能保證9...

    yuanxin 評(píng)論0 收藏0
  • Laravel 的 Session機(jī)制簡(jiǎn)介

    摘要:我們?cè)谶@個(gè)類中的方法看到如下代碼,一個(gè)典型的過(guò)濾器,在這個(gè)中獲取的方法是。,整個(gè)初始化的過(guò)程總結(jié)下巧妙的使用了面向?qū)ο蟮慕涌诜绞剑瑸槲覀兲峁┝烁鞣N各樣不同的存儲(chǔ)方式,一旦我們了解了存儲(chǔ)方式和加密規(guī)則,讓不同的容器進(jìn)行共享的目的也可以達(dá)到 前些天,為了解答一個(gè)問(wèn)題,就去研究了Laravel的源碼,講講我的收獲:這個(gè)是問(wèn)題源:http://segmentfault.com/q/101000...

    kelvinlee 評(píng)論0 收藏0
  • Laravel學(xué)習(xí)筆記之Session源碼解析(上)

    摘要:然后中間件使用方法來(lái)啟動(dòng)獲取實(shí)例,使用類來(lái)管理主要分為兩步獲取實(shí)例,主要步驟是通過(guò)該實(shí)例從存儲(chǔ)介質(zhì)中讀取該次請(qǐng)求所需要的數(shù)據(jù),主要步驟是。 說(shuō)明:本文主要通過(guò)學(xué)習(xí)Laravel的session源碼學(xué)習(xí)Laravel是如何設(shè)計(jì)session的,將自己的學(xué)習(xí)心得分享出來(lái),希望對(duì)別人有所幫助。Laravel在web middleware中定義了session中間件IlluminateSess...

    NervosNetwork 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<