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, 다음이 표시됩니다.