1 pièce(s) jointe(s)
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:
Citation:
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:
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:
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:
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.