Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Mudança no Kernel e na declaração de um middleware no construtor do controller

Desde o Laravel 11, algumas mudanças ocorreram. O arquivo 'Kernel.php' não existe mais, para configurar um novo middleware com um 'alias' precisamos ir em bootstrap/app.php, na parte "->withmiddleware" onde declaramos um novo middleware com a seguinte sintaxe:

->withMiddleware(function (Middleware $middleware) { $middleware->alias([ 'autenticator' => Authenticator::class, ]); })

Adicionar um middleware ao construtor do controller também não é mais aceito, agora, temos que implementar a interface 'HasMiddleware' e implementar a função 'middleware' com a seguinte sintaxe:

public static function middleware() { return [ new Middleware(middleware: Authenticator::class, except: ['index']), ]; }

1 resposta
solução!

Olá Daniel! Como vai?

É verdade que houve algumas alterações significativas na forma como configuramos e aplicamos middlewares, especialmente com a remoção do arquivo Kernel.php e a introdução de novas maneiras de definir middlewares nos controladores.

Para o seu caso específico, onde você deseja aplicar o middleware Authenticator com exceções para determinados métodos, você pode seguir o novo padrão que mencionou:

  1. Definição de Middleware com Alias: No arquivo bootstrap/app.php, você pode definir um alias para o seu middleware, facilitando o uso nas rotas. Isso é feito da seguinte forma:

    ->withMiddleware(function (Middleware $middleware) {
        $middleware->alias([
            'autenticator' => Authenticator::class,
        ]);
    })
    
  2. Aplicação de Middleware no Controller: Com as mudanças, agora é necessário implementar a interface HasMiddleware no seu controller e definir o middleware com exceções diretamente na função middleware:

    public static function middleware()
    {
        return [
            new Middleware(middleware: Authenticator::class, except: ['index']),
        ];
    }
    

Isso permite que você aplique o middleware a todos os métodos do controller, exceto aqueles que você especificar, como o index no seu exemplo.

Essas alterações visam tornar o uso de middlewares mais flexível e organizado, especialmente em projetos maiores. Espero que essa explicação ajude a esclarecer como você pode adaptar seu código às novas práticas do Laravel 11.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.