web-dev-qa-db-fra.com

Où est le bon endroit pour vérifier ACL / Session expired / permissions?

Je voudrais savoir quel est le lieu correct, recommandé ou le plus souvent utilisé pour vérifier la session expirée, l'autorisation, les droits ACL?

En bref: est-ce que je vérifie

!$session->isActive() 

Dans la méthode d'affichage du contrôleur ou dans l'affichage de vue ou dois-je enregistrer les deux?

que dire de la

$user->authorise('example.canDo','com_example')

EDIT: Exemple supplémentaire

I my view.html J'inclus des chèques comme celui-ci. (Pourquoi? Parce que certains exemples en avaient) et je commence à en avoir marre de faire cela tout le temps.

if (!$user->authorise('myCom.myAdmin', 'com_myCom') || !$session->isActive()) {
  $app->redirect('/index.php?option=com_users&view=login&return=' .  
  urlencode(base64_encode($this->currPageUrl)));
}
5
Andreas

Session et ACL sont deux concepts distincts, même s’ils sont couplés. Il est donc utile de comprendre la distinction qui existe entre eux. J'assimile aussi le terme permissions avec ACL.

Session

Puisque vous utilisez Joomla comme colonne vertébrale, la plate-forme fait le gros du travail en matière de gestion et d’authentification de session. Les chances que vous ayez besoin d'interagir avec la session sont plutôt minces (il y a des cas d'utilisation, mais pas de session expirée). Donc, une réponse simple est: Joomla gère la session pour vous. Vous n'avez rien à faire.

Qu'est-ce qui se passe, c'est que si vous avez besoin (via ACL) d'un utilisateur enregistré pour exécuter une action et que la session a expiré, vous n'avez pas besoin d'effectuer de vérifications supplémentaires.

ACL

ACL peut être utilisé de différentes manières, il n’existe donc pas de réponse simple. Voici quelques idées de base cependant.

  • Si vous souhaitez effectuer une vérification simple pour voir si l'utilisateur est même autorisé à accéder à un composant, le fichier principal du composant (pour com_example, example.php) sera l'endroit pour le faire.
  • Plus vos autorisations sont complexes, vous les utiliserez dans les contrôleurs, les vues et les modèles (avec une préférence pour cet ordre, si possible).
3
Valentin Despa