
- Yii 教程
- Yii - 首頁
- Yii - 概述
- Yii - 安裝
- Yii - 建立頁面
- Yii - 應用結構
- Yii - 入口指令碼
- Yii - 控制器
- Yii - 使用控制器
- Yii - 使用操作
- Yii - 模型
- Yii - 小部件
- Yii - 模組
- Yii - 檢視
- Yii - 佈局
- Yii - 資源
- Yii - 資源轉換
- Yii - 擴充套件
- Yii - 建立擴充套件
- Yii - HTTP 請求
- Yii - 響應
- Yii - URL 格式
- Yii - URL 路由
- Yii - URL 規則
- Yii - HTML 表單
- Yii - 驗證
- Yii - 特設驗證
- Yii - AJAX 驗證
- Yii - 會話
- Yii - 使用 Flash 資料
- Yii - Cookie
- Yii - 使用 Cookie
- Yii - 檔案上傳
- Yii - 格式化
- Yii - 分頁
- Yii - 排序
- Yii - 屬性
- Yii - 資料提供者
- Yii - 資料小部件
- Yii - ListView 小部件
- Yii - GridView 小部件
- Yii - 事件
- Yii - 建立事件
- Yii - 行為
- Yii - 建立行為
- Yii - 配置
- Yii - 依賴注入
- Yii - 資料庫訪問
- Yii - 資料訪問物件
- Yii - 查詢構建器
- Yii - Active Record
- Yii - 資料庫遷移
- Yii - 主題
- Yii - RESTful API
- Yii - RESTful API 實踐
- Yii - 欄位
- Yii - 測試
- Yii - 快取
- Yii - 碎片快取
- Yii - 別名
- Yii - 日誌記錄
- Yii - 錯誤處理
- Yii - 身份驗證
- Yii - 授權
- Yii - 本地化
- Yii - Gii
- Gii – 建立模型
- Gii – 生成控制器
- Gii – 生成模組
- Yii 有用資源
- Yii - 快速指南
- Yii - 有用資源
- Yii - 討論
Yii - 授權
驗證使用者是否有足夠許可權執行某些操作的過程稱為**授權**。Yii 提供了一個 ACF(訪問控制過濾器),這是一種作為**yii\filters\AccessControl**實現的授權方法。修改 SiteController 的 behaviors() 函式 -
public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'only' => ['about', 'contact'], 'rules' => [ [ 'allow' => true, 'actions' => ['about'], 'roles' => ['?'], ], [ 'allow' => true, 'actions' => ['contact', 'about'], 'roles' => ['@'], ], ], ], ]; }
在上面的程式碼中,ACF 作為行為附加。only 屬性指定僅對 about 和 contact 操作應用 ACF。所有其他操作都不受訪問控制。rules 屬性列出訪問規則。所有訪客(具有“?”角色)都允許訪問**about**操作。所有已認證的使用者(具有“@”角色)都允許訪問 contact 和 about 操作。
如果訪問 URL **https://:8080/index.php?r=site/about**,將會看到頁面,但如果開啟 URL **https://:8080/index.php?r=site/contact**,將會重定向到登入頁面,因為只有已認證的使用者才能訪問**contact**操作。
訪問規則支援許多選項 -
**allow** - 定義這是“允許”規則還是“拒絕”規則。
**actions** - 定義此規則匹配哪些操作。
**controllers** - 定義此規則匹配哪些控制器。
**roles** - 定義此規則匹配的使用者角色。識別兩種特殊角色 -
**?** - 匹配訪客使用者。
**@** - 匹配已認證的使用者。
**ips** - 定義此規則匹配的 IP 地址。
**verbs** - 定義此規則匹配的請求方法(POST、GET、PUT 等)。
**matchCallback** - 定義應呼叫的 PHP 可呼叫函式,以檢查是否應應用此規則。
**denyCallback** - 定義當此規則拒絕訪問時應呼叫的 PHP 可呼叫函式。
密碼
**步驟 1** - Yii 提供了以下方便的方法來處理密碼。
public function actionAuth() { $password = "asd%#G3"; //generates password hasg $hash = Yii::$app->getSecurity()->generatePasswordHash($password); var_dump($hash); //validates password hash if (Yii::$app->getSecurity()->validatePassword($password, $hash)) { echo "correct password"; } else { echo "incorrect password"; } //generate a token $key = Yii::$app->getSecurity()->generateRandomString(); var_dump($key); //encrypt data with a secret key $encryptedData = Yii::$app->getSecurity()->encryptByPassword("mydata", $key); var_dump($encryptedData); //decrypt data with a secret key $data = Yii::$app->getSecurity()->decryptByPassword($encryptedData, $key); var_dump($data); //hash data with a secret key $data = Yii::$app->getSecurity()->hashData("mygenuinedata", $key); var_dump($data); //validate data with a secret key $data = Yii::$app->getSecurity()->validateData($data, $key); var_dump($data); }
**步驟 2** - 輸入 URL **https://:8080/index.php?r=site/auth**,將會看到以下內容。
