Yii2 nécessite tous les Controller et Action pour se connecter
Dans mon sitecontroller j'écris comme ça
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'actions' => ['login', 'error'],
'allow' => true,
],
[
'actions' => ['logout', 'index' ,'call-back'], //add all actions to take guest to login page
'allow' => true,
'roles' => ['@'],
],
],
],
donc, Si je vais à l'index ou le rappel de l'action,je vais redirigé vers la page de connexion.
mais je dois le faire pour l'ensemble de l'action à chaque contrôleur.
Pourriez-vous me dire la meilleure façon de le faire?
source d'informationauteur Ngoun Thavy
Vous devez vous connecter pour publier un commentaire.
Place cette règle au début de la
rules
section:En omettant les
actions
signifie que toutes les actions.De sorte que votre
AccessControl
config sera comme ceci:Gardez à l'esprit que les règles sont appliquées dans l'ordre où elles sont déclarées.
De le faire à l'échelle mondiale, sans héritage, ajouter le
as beforeRequest
tableau ci-dessous (pas à l'intérieur!) lecomponents
déclaration dans votre application config:Ce code sera exécuté avant chaque demande et de bloquer toutes les actions sauf
login
pour les clients.Assurez-vous qu'il n'y a pas de
login
action dans d'autres contrôleurs deSiteController
. Si il y a (et elles sont par exemple à des fins différentes), bloc explicitement selon les contrôleurs. Mais c'est assez rare.Si vous souhaitez ajouter de contrôle d'accès pour toutes vos actions de contrôleur. Veuillez ajouter le code ci-dessous dans le fichier de configuration principal en vertu de la section des composants.
Si vous omettez le "
actions
"-fait partie de la matrice complètement, il sera valable pour toutes les actions du contrôleur.Si vous voulez le faire pour chaque contrôleur, il suffit d'ajouter une couche entre les deux: le
Et puis tirer votre
controller
à partir de cette classe.Ou vous pouvez le mettre dans une
trait
et l'utilisation de l'ajouter avec unuse
dans chaque contrôleur.Essayez ceci dans le fichier suivant.