yii2局部開啟關閉csrf驗證的程式碼
本文主要和大家介紹了yii2局部關閉(開啟)csrf的驗證的實例代碼。小編覺得蠻不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。
(1)全域使用,我們直接在設定檔中設定enableCookieValidation為true
request => [ 'enableCookieValidation' => true, ]
如果不需要使用csrf的話,設定'enableCookieValidation' => false,但是這是不安全的,因此yii2的yii\web\request中的enableCookieValidation預設為true的,也就是預設開啟csrf的,所以我們也可以不配置這個值,預設開啟。
如果開啟csrf,因為這是全域的,所以在任何的post請求都會要求認證,所以我們在post資料的時候,就必須設定csrf的資料隱藏在表單中。
複製程式碼 程式碼如下:
post資料的時候必須要把這個值post過去,這個值的產生= Yii ::$app->request->csrfToken ?>,回傳一個加密後的csrfToken。
所以無論是post表單或ajax的post過去,都必須設定csrfToken這個值,並且要提交時要post過去。如果沒有的話,就會發生錯誤,無法認證通過。
(2)如果想在某些控制器不想使用csrf驗證的話,又該如何做呢?
方法很簡單,直接設定
public $enableCsrfValidation = false ,
因為這個Controller繼承與yii\web\Controller ,將相當於繼承於enableCsrfValidation這個屬性,那麼在建立控制器實例時,就會在這個控制器關閉csrf功能,存取這個控制器的post的方式時,也就不會進行驗證。
舉一個例子,例如我們開發API的時候,微信那邊的介面需要post資料給我們的介面時,由於微信端不知道csrfToken,所以存取post資料的時候,如果開啟全域csrf的話,那肯定不能存取成功的。所以這時就需要關閉這個API 的csrf。
3)如果要具體關閉至某一個action呢?
有時在某些功能中,我們需要在某一個action中關閉csrf驗證。我們知道對於csrf的驗證是在beforeAction($Action)中實現的,下面我們可以在Controller中重寫beforeAction($action)這個方法
public function beforeAction($action) { $currentaction = $action->id; $novalidactions = ['dologin']; if(in_array($currentaction,$novalidactions)) { $action->controller->enableCsrfValidation = false; } parent::beforeAction($action); return true; }
。的參數$action是controller針對這個訪問實例化的對象,裡麵包含很多訊息,大家可以列印看看。
先執行$action->id取得目前的存取的action名稱。而$novalidactions是一個數組,裡面是action名稱,這些action都是你需要關閉csrf的認證的操作(需要關閉csrf認證的操作)。
透過目前的存取的action是否在這個$novalidactions中,如果在,說明這個action需要關閉csrf功能,所以就將這個控制器實例的設定為
$action->controller->enableCsrfValidation = false
接下來再執行parent::beforeAction($action),此時傳入來的$action裡的controller實例的enableCsrfValidation已變成false。
最後一定要回傳true,否則的話,不會往下執行action操作的。
(4)如果局部開啟呢?
首先在設定檔要設定
request => [ 'enableCookieValidation' => false, ]
全域不使用csrf。
(a)要在控制器中開啟,只需要設定
public $enableCsrfValidation = true
則整個控制器都會開啟
# (b)要在action中開啟
public function beforeAction($action) { $currentaction = $action->id; $accessactions = ['dologin']; i f(in_array($currentaction,$accessactions)) { $action->controller->enableCsrfValidation = true; } parent::beforeAction($action); return true; }
$accessactions是需要開啟csrf的action的名稱,將設定$action->controller->enableCsrfValidation = true,當前操作可以開啟csrf。
相關建議:
以上是yii2局部開啟關閉csrf驗證的程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

360瀏覽器推薦的廣告如何關閉?相信很多的用戶都在使用360瀏覽器,不過這款瀏覽器有時候會彈出廣告,這就使得很多的用戶們都十分的苦惱,下面就讓本站來為用戶們來仔細的介紹一下如何關閉電腦360瀏覽器推薦的廣告吧。 如何關機360瀏覽器推薦的廣告? 方法一: 1、開啟360安全瀏覽器。 2、找到右上角「三橫槓」標誌,點選【設定】。 3、在彈出的介面左側工作列中找到【實驗室】,勾選【啟用「360熱點資訊」功能】即可。 方法二: 1、先雙擊

新浪新聞軟體內提供的新聞頭條資訊非常多,基本上都是官方平台推送的,每一篇新聞文章內容都是擁有真實性的,上下滑動一鍵搜尋翻閱,整體的閱讀氛圍更加舒適。輸入手機號碼在線上登錄,不同領域的新聞頻道都是開放的,二十四小時更新都是不重複的,國內外、地方時事新聞都不會少的,上下滑動選擇一鍵翻閱,新聞內容都是大家感興趣的,還能關閉新聞速遞功能,這樣也不會被影響到,任何時候都可以打開一覽,海量熱門的新聞頭條新鮮事搶先看,現在小編在線詳細為新浪新聞用戶們帶來關閉速遞功能的操作步驟。 找到新浪新聞進入,點選右下角

在Windows11作業系統中,安全中心是一個重要的功能,它可幫助使用者監控系統安全狀態、防禦惡意軟體和保護個人隱私。然而,有時使用者可能需要暫時關閉安全中心,例如在安裝某些軟體或進行系統調優時。本文將詳細介紹Windows11安全中心的關閉方法,協助您正確且安全地作業系統。 1.如何關閉Windows11安全中心在Windows11中,關閉安全中心並不

快手是一款很卓越的影片播放器,快手中的免密支付功能小夥伴們都非常熟悉,在日常生活中可以給我們很大的幫助,尤其是在平台中購買自己需要的商品時可以更好的去支付,我們現在要去取消掉該如何操作呢?怎麼樣才能真正有效取消掉免密支付功能?免密支付取消的方法非常簡單,具體的操作方法已經整理好了,讓我們一起到本站本站中來看整篇攻略吧,希望能夠幫助大家。快手關閉免機密支付方式教學 1、開啟快手app,點選左上角的三條橫線。 2、點選快手小店。 3、在上面的選項列中,找到免密付款並點擊進去。 4、點擊支

Windows作業系統作為全球用戶數量最龐大的作業系統之一,一直以來備受用戶青睞。然而,在使用Windows系統時,使用者可能會遇到許多安全隱患,例如病毒攻擊、惡意軟體等威脅。為了強化系統安全,Windows系統內建了許多安全保護機制,其中之一就是Windows安全中心的即時保護功能。今天,我們將會詳細介紹Windows安全中心即時保護的關閉方法。首先,讓我們

抖音是一款備受歡迎的短影片社群平台,讓使用者可以簡單地記錄生活、分享快樂。私訊功能在抖音中扮演著重要的角色,是使用者互動的主要方式之一。有時候,用戶可能會碰到對方關閉了私訊模式,導致無法傳送訊息的情況。一、抖音私訊對方關閉了私訊模式怎麼開啟? 1.確認對方是否開啟了隱私設置首先,我們應該確認對方是否啟用了隱私設置,可能已經限制了私訊的接收。如果他們設定了僅允許熟人私信,我們可以嘗試透過其他途徑聯繫他們,例如透過共同的朋友或在社群媒體平台上互動。 2.發送好友申請如果對方並未開啟隱私設置,那麼我們

Windows11是微軟公司最新推出的作業系統版本,相較於先前的版本,Windows11對系統安全性進行了更嚴格的管理和監控,其中一個重要的功能就是安全中心。安全中心可以幫助使用者管理和監控系統的安全狀態,確保系統不受惡意軟體和其他安全威脅的侵害。雖然安全中心對於保護系統安全很重要,但有時使用者可能會因為個人需求或其他原因希望關閉安全中心。本文將介紹如何在W

1.在手機設定中點選聲音與震動。 2、點選杜比全景音。 3.將杜比全景聲後方的開關關閉即可。
