Я новичок в программировании и использую CodeIgniter v4.5 для создания системы управления пользователями. Я не могу перенаправить пользователей, которые пытаются получить доступ к панели управления моим приложением без входа в форму входа. Я пытался защитить свои маршруты разными способами, но при попытке получить доступ к панели управления или странице профиля пользователя без прохождения формы входа всегда отображается одно и то же сообщение: «Ошибка типа: str_contains(): аргумент № 1 ($ haystack) должен иметь строковый тип, задано значение NULL»
Я создал фильтры, которые должны защищать маршруты, чтобы иметь возможность перенаправлять пользователей на страницу входа. сначала я создал файл AuthFilter.php в папке app\Filters, вот его содержимое:
// AuthFilter.php
<?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
}
}
во-вторых, я настроил файл фильтра, который находится в app/config, вот так:
public array $aliases = [ 'auth' => \App\Filters\AuthFilter::class, ];
наконец, я настроил маршруты следующим образом:
<?php
namespace Config;
use CodeIgniter\Router\RouteCollection;
/**
* @var RouteCollection $routes
*/
//$routes->get('/', 'Home::index');
$routes->group('auth', function(RouteCollection $routes) {
$routes->match(['get', 'post'], 'login', 'Auth::login');
$routes->match(['get', 'post'], 'register', 'Auth::register');
$routes->match(['get', 'post'], 'register/registerUser', 'Auth::registerUser');
$routes->match(['get', 'post'], 'login/loginUser', 'Auth::loginUser');
$routes->get('logout', 'Auth::logout');
});
// Logged in profil user
$routes->group('users', ['filter' => 'auth'], function(RouteCollection $routes) {
$routes->get('profil', 'Profil::profilUtilisateur');
});
// Logged in dashboard
$routes->group('', ['filter' => 'auth'], function(RouteCollection $routes) {
$routes->get('/Home', 'Home::index');
});
но он все равно показывает это сообщение: «Ошибка типа str_contains(): Аргумент №1 ($haystack) должен иметь тип string, задано значение null "
Как вы могли бы мне помочь, пожалуйста?





Добрый вечер всем, хочу сообщить, что моя проблема решена. Проблема в codeigniter 4.5.0, там точно был баг, скачал версию 4.5.1 и все исправлено.
https://forum.codeigniter.com/showthread.php?tid=90644
https://github.com/codeigniter4/CodeIgniter4/issues/8730
Спасибо вам!
Закройте вопрос!
Всем добрый вечер, хочу сообщить, что моя проблема решена. Проблема в codeigniter 4.5.0, там точно был баг, скачал версию 4.5.1 и все исправлено.