您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎么在yii2.0框架中利用beforeAction防非法登陸,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
beforeAction基本原理:
對比
1、執行順序
init > beforeAction
2、調用子函數時,兩個函數都不會再次執行
3、返回值
init返回false繼續執行,beforeAction停止執行
4、執行EXIT,全部停止
從框架的示例代碼來看,init用于初始化數據,beforeAction用戶事件的處理
代碼
// 登錄統一驗證 public function beforeAction( $action ){ // 驗證是否登錄 $is_login = $this->checkLoginStatus(); if (in_array($action->getUniqueId(), $this->allowAllAction ) ) { return true; } // 是否已經登錄了 沒有登錄的話 判斷登錄方式 if(!$is_login) { // 如果是ajax方式進行請求 if ( \Yii::$app->request->isAjax) { $this->renderJSON([], "未登錄,請返回用戶中心", -302); } else { $this->redirect( UrlService::buildWebUrl("/user/login") ); } return false; } }
其他的控制器使用的時候進行繼承一下就可以了!
class UserController extends BaseWebController
防非法登陸的方法:
首先寫一個公共控制器 讓其他所以需要防止非法登陸的頁面繼承一下這個公共控制器
<?php namespace frontend\controllers; use Yii; use yii\web\Controller; class PublicController extends Controller{ public function beforeAction($action){ $cookie = \Yii::$app->request->cookies; //取出存入的cookie值 括號里寫自己定義的cookie名字 $user_cookie = $cookie->get('user_id'); //判斷是否有cookie if(!isset($user_cookie)){ echo "<script>alert('請先登錄');location.href='?r=login/login'</script>"; } return parent::beforeAction($action); } }
然后在任意一個控制器中加入一段代碼 不需要所有控制器都寫 只寫一個控制器里面就行
public function beforeAction($action) { if(!parent::beforeAction($action)) { return false; } }
以上就是怎么在yii2.0框架中利用beforeAction防非法登陸,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。