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

Redirecionamento em excesso por localhost

Meu código, pelo que parece, entra em um redirecionamento infinito, mesmo adicionando a regra no Middleware "Autorizador". Estou usando a versão 5.7.22 do Laravel.

namespace estoque\Http\Middleware;

use Closure;
use Auth;

class Autorizador 
{
    public function handle($request, Closure $next)
    {
        if (!$request->is('login') && Auth::guest()) {
            return redirect ('/login');
        }
        return $next($request);
    }
}

No Kernel eu adicionei da seguinte forma:

protected $middleware = [
        \estoque\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \estoque\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        \estoque\Http\Middleware\TrustProxies::class,
        \estoque\Http\Middleware\Autorizador::class,
    ];

Ao carregar a página ainda assim a mensagem "ERR_TOO_MANY_REDIRECTS" é exibida e não sai disso. Tentei dar uma olhada no arquivo desse módulo do curso, mas não encontrei os arquivos mencionados na aula, é isso mesmo?

Obrigado.

1 resposta
solução!

Oi Adriano, tudo bom?

Tentei dar uma olhada no arquivo desse módulo do curso, mas não encontrei os arquivos mencionados na aula, é isso mesmo?

Dei uma olhada aqui nos arquivos do curso pra esse capitulo, parece que a Middleware de autenticação está com o nome Authenticate ao invés de Autorizador, como você preferiu. Tenta dar uma procurada por esse nome =)

Entretanto, o conteudo daquele arquivo não é muito diferente do seu. Acho que o problema está no arquivo de configuração. Nos arquivos do curso, o kernel é desse jeito aqui:

<?php namespace estoque\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel {

    /**
     * The application's global HTTP middleware stack.
     *
     * @var array
     */
    protected $middleware = [
        'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
        'Illuminate\Cookie\Middleware\EncryptCookies',
        'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
        'Illuminate\Session\Middleware\StartSession',
        'Illuminate\View\Middleware\ShareErrorsFromSession',
        'estoque\Http\Middleware\VerifyCsrfToken',
    ];

    /**
     * The application's route middleware.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => 'estoque\Http\Middleware\Authenticate',
        'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
        'guest' => 'estoque\Http\Middleware\RedirectIfAuthenticated',
    ];

}

E, pelo o que parece, seu Authorizador deveria estar nas $routeMiddleware apontando para 'auth' =)