3
respostas

Redirecionamento de '/entrar' para '/login'

Olá, boa noite Vinícius.

Estou com o seguinte problema: Quando digito a seguinte url no navegador http://localhost:8000/entrar, é redirecionado para http://localhost:8000/login. Como fazer para não ocorrer esse redirecionamento?

Arquivo web.php

Route::get('/', function () {
    return view('welcome');
});

Route::get('/series', 'SeriesController@index' )->name('listar_series')->middleware('auth');;
Route::get('/series/criar', 'SeriesController@create' )->name('criar_serie');
Route::post('/series/criar', 'SeriesController@store' );
Route::delete('/series/{id}', 'SeriesController@destroy' );
Route::post('/series/{id}/editaNome', 'SeriesController@editaNome' );

Route::get('/series/{serieId}/temporadas', 'TemporadasController@index');
Route::get('/temporadas/{temporada}/episodios', 'EpisodiosController@index');
Route::post('/temporadas/{temporada}/episodios/assistir', 'EpisodiosController@assistir');
Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::get('/entrar', 'EntrarController@index');
Route::post('/entrar', 'EntrarController@entrar');

Route::get('/registrar', 'RegistroController@create');
Route::post('/registrar', 'RegistroController@store');

Route::get('/sair', function () {
    \Illuminate\Support\Facades\Auth::logout();
    return redirect('/entrar');
});

SeriesController.php

class SeriesController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function index(Request $request) {
        if (!Auth::check()) {
            echo "Não autenticado";
            exit();

        }
        $series = Serie::query()
            ->orderBy('nome')
            ->get();
        $mensagem = $request->session()->get('mensagem');

        return view('series.index', compact('series', 'mensagem'));
    }

view\entrar\index

@extends('layout')

@section('cabecalho')
    Entrar
@endsection

@section('conteudo')

    @include('erros', ['errors' => $errors])

    <form method="POST">
        @csrf
        <div class="form-group">
            <label for="email">E-mail: </label>
            <input type="email" name="email" id="email" required class="form-control">
        </div>

        <div class="form-group">
            <label for="password">Senha: </label>
            <input type="password" name="password" id="password" required min="1" class="form-control">
        </div>

        <button class="btn btn-primary mt-3">Entrar</button>

        <a href="/registrar" class="btn btn-secondary mt-3">Registrar-me</a>

    </form>
@endsection
3 respostas

Classe EntrarController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class EntrarController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function index()
    {
        return view('entrar.index');
    }

    public function entrar(Request $request)
    {
        if (!Auth::attempt($request->only(['email', 'password']))) {
            return redirect()
                ->back()
                ->withErrors('Usuário e/ou senha incorretos');
        }

        return redirect()->route('listar_series');

    }
}

Vinícius, encontrei o problema: Na Entrarcontroller.php, no __construct, eu adicionei o middleware $this->middleware('auth');. E fiquei pensando o motivo desse redirecionamento e caiu a ficha, e me corrija se eu estiver errado, por favor: Esse midlleware de autenticação, sempre irá verificar se está logado ou não. Nesse caso, ao acessar diretamente pela url, o sistema verifica que a rota acessada precisa de autenticação e por isso redireciona para a rota de login do laravel, isso?

Desde já, obrigado!

Roger,

Sua conclusão esta correta, pode ler isto direto na documentação do Laravel, inclusive este tópico vai te indicar como alterar este redirecionamento se desejar, é bom que já vai aprendendo um pouco mais do Framework.

https://laravel.com/docs/8.x/authentication#redirecting-unauthenticated-users

Um abs, bons estudos.