第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

我有一個(gè)非常大的問題??!

在User控制器中有一個(gè)actionVlogin方法,這個(gè)方法主要的功能是檢查Url的參數(shù)并設(shè)置cookie的。然而User控制器時(shí)繼承Base控制的,base控制器中有個(gè)beforeAction方法,這個(gè)方法主要的作用是檢查權(quán)限,并且在所有繼承Base控制器的控制器里面的所有方法之前執(zhí)行。

我的問題是:既然User控制器時(shí)繼承Base控制器的,所以User控制器里面的actionVlogin方法在beforeAction方法之后執(zhí)行。

當(dāng)我們?cè)趯?dǎo)航條敲下/User/Vlogin?uid=1時(shí),先跑的是beforeAction方法,此刻還沒有跑到actionVlogin方法。因?yàn)槭怯邢群箜樞虻?,所以?/p>

跑到beforeAction方法時(shí),Cookie還沒有進(jìn)行設(shè)置(Cookie在actionVlogin方法設(shè)置)。所以你在beforeAction方法里面的所有檢查都好像是

徒勞的,因?yàn)榇藭r(shí)并沒有Cookie。然而你把全部代碼都寫完權(quán)限功能卻是好用的,為什么?是我理解錯(cuò)了嗎?


求大神指教~~


求大神指教~~求大神指教~~

正在回答

2 回答

BaseController的beforeAction()可以看做有三個(gè)功能:

  1. 登錄狀態(tài)校驗(yàn)。?

    注意到beforeAction()的開始幾句:

???$login_status?=?$this->checkLoginStatus();
???if?(?!$login_status?&&?!in_array(?$action->uniqueId,$this->allowAllAction?)??)?{
???????if(Yii::$app->request->isAjax){
???????????$this->renderJSON([],"未登錄,請(qǐng)返回用戶中心",-302);
???????}else{
???????????$this->redirect(?UrlService::buildUrl("/user/login")?);//返回到登錄頁面
???????}
???????return?false;
???}

邏輯是:如果用戶已經(jīng)登錄(有cookie), 則獲取用戶的權(quán)限列表; 如果沒有登錄,則重定向到登錄模塊(也就是說User的Vlogin())。

但是

!in_array(?$action->uniqueId,$this->allowAllAction?)

時(shí)排除了login和vlogin兩個(gè)方法的,也就是說訪問vlogin時(shí),不會(huì)進(jìn)入到這塊的判斷跳轉(zhuǎn)。所以繼續(xù)向下執(zhí)行。

?2. 記錄到訪問日志。

也就是說`$model_log`處理的那一段。[直接寫入,不需要校驗(yàn)]

3. 驗(yàn)證訪問權(quán)限。

if(?!$this->checkPrivilege(?$action->getUniqueId()?)?){????
????$this->redirect(?UrlService::buildUrl(?"/error/forbidden"?)?);????
????return?false;????
}

但是 checkPrivilege()方法有下面一段:

if(?in_array(?$url,$this->ignore_url?)?){????
????return?true;????
}

所以vlogin()的訪問權(quán)限也不會(huì)進(jìn)行校驗(yàn)。


所以,綜上,訪問Vlogin()時(shí),beforeAction()的作用僅僅是記錄訪問日志,并沒有什么關(guān)于cookie的校驗(yàn),所以也不存在徒勞之說。

1 回復(fù) 有任何疑惑可以回復(fù)我~

。。。

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
RBAC打造通用web管理權(quán)限
  • 參與學(xué)習(xí)       20508    人
  • 解答問題       51    個(gè)

RBAC為商業(yè)系統(tǒng)安全防范手段,結(jié)合理論和實(shí)戰(zhàn)介紹RBAC

進(jìn)入課程

我有一個(gè)非常大的問題??!

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)