Yii - Autorização
O processo de verificar se um usuário tem permissão suficiente para fazer algo é chamado authorization. Yii fornece um ACF (Filtro de Controle de Acesso), um método de autorização implementado comoyii\filters\AccessControl. Modifique a função behaviors () do SiteController -
public function behaviors() {
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['about', 'contact'],
'rules' => [
[
'allow' => true,
'actions' => ['about'],
'roles' => ['?'],
],
[
'allow' => true,
'actions' => ['contact', 'about'],
'roles' => ['@'],
],
],
],
];
}
No código acima, ACF é anexado como um comportamento. A única propriedade especifica que o ACF deve ser aplicado apenas às ações sobre e contato. Todas as outras ações não estão sujeitas ao controle de acesso. A propriedade rules lista as regras de acesso. Todos os convidados (com a função “?”) Terão permissão para acessar oaboutaçao. Todos os usuários autenticados (com a função “@”) terão permissão para acessar o contato e sobre as ações.
Se você for para o URL http://localhost:8080/index.php?r=site/about, você verá a página, mas se abrir o URL http://localhost:8080/index.php?r=site/contact, você será redirecionado para a página de login porque apenas usuários autenticados podem acessar o contact açao.
As regras de acesso suportam muitas opções -
allow - Define se esta é uma regra de "permitir" ou "negar".
actions - Define a quais ações esta regra corresponde.
controllers - Define com quais controladores esta regra corresponde.
roles- Define funções de usuário às quais esta regra corresponde. Duas funções especiais são reconhecidas -
? - corresponde a um usuário convidado.
@ - corresponde a um usuário autenticado.
ips - Define endereços IP com os quais esta regra corresponde.
verbs - Define a qual método de solicitação (POST, GET, PUT, etc.) esta regra corresponde.
matchCallback - Define uma função que pode ser chamada de PHP que deve ser chamada para verificar se esta regra deve ser aplicada.
denyCallback - Define uma função que pode ser chamada de PHP que deve ser chamada quando esta regra negar o acesso.
Senhas
Step 1 - Yii fornece os seguintes métodos úteis para trabalhar com senhas.
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 - Insira o URL http://localhost:8080/index.php?r=site/auth, você verá o seguinte.