Проблема перенаправления пользователя на странице входа в CodeIgniter 4.5

Я новичок в программировании и использую 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 и все исправлено.

Samgione 24.05.2024 05:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добрый вечер всем, хочу сообщить, что моя проблема решена. Проблема в codeigniter 4.5.0, там точно был баг, скачал версию 4.5.1 и все исправлено.

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

https://github.com/codeigniter4/CodeIgniter4/issues/8730

Спасибо вам!

Закройте вопрос!

Pathik Vejani 24.05.2024 15:17

Другие вопросы по теме