Blog EspecializaTi
Carlos Ferreira Por: Carlos Ferreira Comentar

Laravel: Redirecionar Após a Autenticação

Laravel - Redirecionar Após a Autenticação

Quando usamos o mecanismo padrão de autenticação do Laravel, que pode ser gerado com o comando abaixo:

php artisan make:auth

Por padrão a rota de redirecionar após fazer o login é “/home“. Porém, em muitos casos essa rota nem é utilizada, porque não faz sentido para a maioria das aplicações, portanto, ao remover essa rota “/home” gera um erro após a autenticação (404).

Para resolver este caso, e decidir qual será a rota de redirecionamento após a autenticação precisamos alterar algumas configurações padrões do Laravel. Para resolver isso abra a classe LoginController (app/Http/Controllers/Auth/LoginController.php) e defina um novo valor para o atributo $redirectTo, exemplo:

protected $redirectTo = '/admin';

Apenas isso! Após fazer o login no sistema o usuário será direcionado por padrão para a rota /admin, e não mais para /home.
A mesma configuração pode ser feita na classe RegisterController e na classe ResetPasswordController, para o redirecionamento ficar correto também depois do cadastro, de depois que reseta a senha.

 
 
 

Trait de Redirecionamento

No exemplo acima foi necessário aplicar a alteração da propriedade em 3 classes diferentes, podemos simplificar isso, e deixar mais fácil esse processo. Para resolver este caso, vamos criar um novo arquivo de trait em app/Http/Controllers/Auth/Traits/RedirectsUsersTrait.php, o conteúdo dessa nova trait pode ser:

namespace App\Http\Controllers\Auth\Traits;;

trait RedirectsUsersTrait
{
	public function redirectTo()
	{
	    return '/admin';
	}
}

Agora só precisa usar essa trait nas classes, e com isso centralizamos essa tarefa de redirecionamento em um único local:

# LoginController / RegisterController / ResetPasswordController:
// Não esquece: use App\Http\Controllers\Auth\Traits\RedirectsUsersTrait;
use RedirectsUsersTrait;

A vantagem dessa abordagem é a liberdade, se for necessário redirecionar o usuário para por exemplo “/profile/username“, podemos fazer algo mais ou menos assim:

public function redirectTo()
{
	$userName = auth()->user()->username;

    return "/profile/{$userName}";
}

 
 
 

Middleware RedirectIfAuthenticated

Outra alteração importante é o no middleware (filtro) RedirectIfAuthenticated (app/Http/Middleware/RedirectIfAuthenticated.php), podemos definir nesse Middleware qual será a rota que irá redirecionar o usuário caso tente acessar a rota de login ou cadastro caso já esteja autenticado, para isso deixe desta forma:

/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @param  string|null  $guard
 * @return mixed
 */
public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect('/admin');
    }

    return $next($request);
}

 

Por hora é isso, espero que tenha gostado, e qualquer dúvida já sabe, só deixar aquele comentário! 🙂

Abraços []’s

 

Carlos Ferreira

Sobre o Autor:

Carlos Ferreira

Carlos Ferreira é Analista de Sistemas Experiente, Empreendedor, Fundador da empresa EspecializaTi. Certificações: Comptia Linux +, LPI, Novell Certification.

Todos os direitos reservados © 2019 - EspecializaTi. É proibida a reprodução total ou parcial deste conteúdo.