IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

CodeIgniter PHP Discussion :

Protection des routes ou de redirection des utilisateurs dans CodeIgniter 4.5


Sujet :

CodeIgniter PHP

  1. #1
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Points : 47
    Points
    47
    Par défaut Protection des routes ou de redirection des utilisateurs dans CodeIgniter 4.5
    Salut, je suis débutant en programmation, je suis entrain d'utiliser codeigniter 4.5 pour créer un système de gestion des utilisateurs.
    Tout fonctionne très bien jusqu’à ce que j'essaie de créer une protection des routes qui permettra de rediriger sur le formulaire de connexion les utilisateurs qui vont essayer d’accéder au dashboard ou à la page de profil sans passer par le formulaire de connexion. Malheureusement, ça affiche un message d'erreur quelque soit la méthode que j'aie utilisé pour protéger les routes.

    Voici le message d'erreur:
    TypeError: str_contains(): Argument #1 ($haystack) must be of type string, null given
    J'ai inseré une immage contenant plus d'information sur le message d'erreur.
    Pour proteger les routes, j'ai créé un fichier AuthFilter.php dans le dossier App\Filters,
    Voici les contenus de ce fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    namespace App\Filters;
     
    use CodeIgniter\HTTP\RequestInterface;
    use CodeIgniter\HTTP\ResponseInterface;
    use CodeIgniter\Filters\FilterInterface;
     
    class AuthFilter implements FilterInterface
    {
        public function before(RequestInterface $request, $arguments = null)
        {
     
                if (!session()->has('loggedInUser')) {
                   return redirect()->to('auth/login')->with('fail', 'You must be logged in, To access this page.');
                }
     
        }
     
        public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
        {
            // Après le filtre
        }
    }
    J'ai modifié ensuite le fichier Filters qui se trouve dans le dossier App\confid de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?php
     
    namespace Config;
     
    use CodeIgniter\Config\Filters as BaseFilters;
    use CodeIgniter\Filters\Cors;
    use CodeIgniter\Filters\CSRF;
    use CodeIgniter\Filters\DebugToolbar;
    use CodeIgniter\Filters\ForceHTTPS;
    use CodeIgniter\Filters\Honeypot;
    use CodeIgniter\Filters\InvalidChars;
    use CodeIgniter\Filters\PageCache;
    use CodeIgniter\Filters\PerformanceMetrics;
    use CodeIgniter\Filters\SecureHeaders;
     
    class Filters extends BaseFilters
    {
     
        public array $aliases = [
     
    	'auth' => \App\Filters\AuthFilter::class,
        ];
     
     
        public array $methods = [];
     
     
        public array $filters = [];
    }
    Enfin, j'ai apporté la modification suivantes aux Routes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Amener l'utilisateur sur la page de profil 
    $routes->group('users', ['filter' => 'auth'], function(RouteCollection $routes) {
        $routes->get('profil', 'Profil::profilUtilisateur');
    });
     
    // Amener l'utilisateur sur le dashboard
    $routes->group('', ['filter' => 'auth'], function(RouteCollection $routes) {
        $routes->get('/Home', 'Home::index');
    });
    NB: Voici les urls: localhost/app/users/profil | localhost/app/ ou localhost/app/Home
    Les urls fonctionnent normalement en passant par le formulaire de connexion, mais quand j'ai essayé d’accéder directement au dashboard ou à la page de profil sans passer par le formulaire de connexion, le message d'erreur s'affiche. Je pense que c'est un bogue dans la version de codeigniter 4.5.

    Comment pourriez-vous m'aider svp?

    Cordialement,
    Samgione.
    Images attachées Images attachées  

  2. #2
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Points : 47
    Points
    47
    Par défaut Mon problème est résolu
    bonsoir à tous, je tiens à vous dire que mon problème est résolu. Le problème est dans codeigniter 4.5.0, il y avait définitivement un bug, j'ai téléchargé la version 4.5.1 et tout est corrigé.

    https://forum.codeigniter.com/showthread.php?tid=90644

    https://github.com/codeigniter4/Code...r4/issues/8730

    Merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/07/2021, 09h30
  2. Protection des données dans un module
    Par dsalvio dans le forum C
    Réponses: 2
    Dernier message: 10/08/2007, 06h30
  3. Authentification des utilisateurs dans une application web
    Par mejdac dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 22/03/2007, 14h17
  4. Réponses: 1
    Dernier message: 06/11/2005, 17h16
  5. gestion des utilisateurs dans une solution 3-tiers
    Par nadia lydia dans le forum Oracle
    Réponses: 3
    Dernier message: 26/10/2005, 12h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo