как redireccionar в login каждый раз, когда он не был заверен? laravel 5.3

Я хочу, чтобы мое приложение прошло по проверке autentificacion, но мне не удается сделать это.

В файле routes.php:

Route::group(['middleware'=>'web'], function(){
    Route::get('/', 'Auth\LoginController@index');
    Route::resource('login', 'Auth\LoginController');
    Route::resource('logout', 'Auth\LoginController@logout');
    Route::resource('prueba', 'PruebaController');
    Route::resource('tablero', 'TableroController');
    Route::post('tablero/menu','TableroController@menu');
});

В файле app / HTTP / Kernel.php:

protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];

В файле app/Http/Middleware/Authenticate.php:

namespace Illuminate\Auth\Middleware;

use Closure;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Contracts\Auth\Factory as Auth;

class Authenticate
{
    /**
     * The authentication factory instance.
     *
     * @var \Illuminate\Contracts\Auth\Factory
     */
    protected $auth;

    /**
     * Create a new middleware instance.
     *
     * @param  \Illuminate\Contracts\Auth\Factory  $auth
     * @return void
     */
    public function __construct(Auth $auth)
    {
        $this->auth = $auth;
    }

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string[]  ...$guards
     * @return mixed
     *
     * @throws \Illuminate\Auth\AuthenticationException
     */
    public function handle($request, Closure $next, ...$guards)
    {
        // si la persona no inició sesión, entonces ....
        if (Auth::guard($guard)->guest()) {
            if ($request->ajax()) {
                return response('Unauthorized.', 401);
            } else {
                // si la persona no inició sesión y no es una solicitud ajax
                // enviar al formulario de ingreso
                return redirect()->guest('entrar');
            }
        }

        return $next($request);
    }

    /**
     * Determine if the user is logged in to any of the given guards.
     *
     * @param  array  $guards
     * @return void
     *
     * @throws \Illuminate\Auth\AuthenticationException
     */
    protected function authenticate(array $guards)
    {
        if (empty($guards)) {
            return $this->auth->authenticate();
        }

        foreach ($guards as $guard) {
            if ($this->auth->guard($guard)->check()) {
                return $this->auth->shouldUse($guard);
            }
        }

        throw new AuthenticationException('Unauthenticated.', $guards);
    }
}
0
задан 03.01.2017, 21:28
0 ответов

В настоящее время это перенаправление находится на файле app/Exceptions/Handler.php

protected function unauthenticated($request, AuthenticationException $exception)
{
    if ($request->expectsJson()) {
        return response()->json(['error' => 'Unauthenticated.'], 401);
    }

    return redirect()->guest('login');
}

где

return redirect()->guest('login');

именно это redirecciona, если ты не заверен, чтобы добавлять в какой-то драйвер, ты можешь делать следующее, в methodo __ construct ()

public function __construct()
{
    $this->middleware('auth');
}

выражение midleware находит в файле app / HTTP / Kernel.php

protected $routeMiddleware = [
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];
1
ответ дан 03.12.2019, 17:53
  • 1
    Ok, уже проверил, но таково, который и не redirecciona. –  03.01.2017, 21:55
  • 2
    проверь то, что añ adi в ответ, если ты продолжаешь учебник laravel.com/docs/5.3/authentication , должно быть, функционируй –  03.01.2017, 21:59
  • 3
    и я считаю их точно равными :-/ –  03.01.2017, 22:11
  • 4
    Попробуй закрывать session, в случае когда - logueado и соглашается на маршрут, который под midleware. –  03.01.2017, 22:16
  • 5
    Он думал именно, что ты не объявил твои ServiceProvider. –  04.01.2017, 00:03