Yii-승인
사용자가 작업을 수행 할 수있는 충분한 권한이 있는지 확인하는 프로세스를 호출합니다. authorization. Yii는 다음과 같이 구현 된 권한 부여 방법 인 ACF (Access Control Filter)를 제공합니다.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는 동작으로 첨부됩니다. 유일한 속성은 ACF가 정보 및 연락처 작업에만 적용되도록 지정합니다. 다른 모든 작업에는 액세스 제어가 적용되지 않습니다. rules 속성은 액세스 규칙을 나열합니다. 모든 게스트 ( "?"역할 포함)는about동작. 모든 인증 된 사용자 ( "@"역할 포함)는 연락처 및 작업에 대한 액세스가 허용됩니다.
URL로 이동하면 http://localhost:8080/index.php?r=site/about, 페이지가 표시되지만 URL을 열면 http://localhost:8080/index.php?r=site/contact, 인증 된 사용자 만 액세스 할 수 있으므로 로그인 페이지로 리디렉션됩니다. contact 동작.
액세스 규칙은 많은 옵션을 지원합니다-
allow − 이것이 "허용"또는 "거부"규칙인지 정의합니다.
actions −이 규칙이 일치하는 동작을 정의합니다.
controllers −이 규칙이 일치하는 컨트롤러를 정의합니다.
roles−이 규칙이 일치하는 사용자 역할을 정의합니다. 두 가지 특별한 역할이 인정됩니다-
? − 게스트 사용자와 일치합니다.
@ − 인증 된 사용자와 일치합니다.
ips −이 규칙이 일치하는 IP 주소를 정의합니다.
verbs −이 규칙이 일치하는 요청 방법 (POST, GET, PUT 등)을 정의합니다.
matchCallback −이 규칙을 적용해야하는지 확인하기 위해 호출해야하는 PHP 호출 가능 함수를 정의합니다.
denyCallback −이 규칙이 액세스를 거부 할 때 호출해야하는 PHP 호출 가능 함수를 정의합니다.
비밀번호
Step 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);
}
Step 2 − URL 입력 http://localhost:8080/index.php?r=site/auth, 다음이 표시됩니다.