Yii授权 Yii认证 Yii本地化 验证用户是否有足够权限来执行某项操作的过程称为 授权 。Yii提供了一个ACF(访问控制过滤器),一种实现为 yii \ filters \ AccessControl 的授权方法。修改SiteController的behavior()函数 - public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'only' => ['about', 'contact'], 'rules' => [ [ 'allow' => true, 'actions' => ['about'], 'roles' => ['?'], ], [ 'allow' => true, 'actions' => ['contact', 'about'], 'roles' => ['@'], ], ], ], ]; } 在上面的代码中,ACF作为一个行为被附加。唯一的属性规定ACF只应用于关于和接触的行为。所有其他操作不受访问控制。rules属性列出访问规则。所有客人(具有“?”角色)都将被允许访问 关于该 操作。所有经过身份验证的用户(具有“@”角色)都将被允许访问联系人和操作。 如果您转到URL http:// localhost:8080 / index.php?r = site / about ,您将看到该页面,但是如果您打开URL http:// localhost:8080 / index.php?r =网站/联系人 ,您将被重定向到登录页面,因为只有经过身份验证的用户才能访问 联系人 操作。 访问规则支持许多选项 - 允许 - 定义这是“允许”还是“拒绝”规则。 操作 - 定义此规则匹配的操作。 控制器 - 定义此规则匹配的控制器。 角色 - 定义此规则匹配的用户角色。 两种特殊角色得到认可 - ? - 匹配访客用户。 @ - 与经过身份验证的用户相匹配。 ips - 定义此规则匹配的IP地址。 动词 - 定义此规则匹配的请求方法(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 http:// localhost:8080 / index.php?r = site / auth ,您将看到以下内容。 Yii认证 Yii本地化