2016-02-13 19 views
5

Desidero che gli utenti ospiti abbiano accesso alla home page ma nel processo di autenticazione integrato i reindirizzamenti di laravel alla pagina di accesso. come posso dare agli utenti ospiti l'accesso alla home page?disabilita il middleware web per rotte specifiche in laravel 5.2

mia routes.php:

Route::group(['middleware' => 'web'], function() { 
Route::auth(); 

Route::get('/', '[email protected]'); 

Route::get('/insert', '[email protected]'); 
Route::get('/job/{id}', '[email protected]'); 

Route::get('/city/{city}', '[email protected]'); 

Route::post('/insert', '[email protected]'); 
Route::get('/cityinsert', '[email protected]'); 
Route::post('/cityinsert', '[email protected]'); 

}); 

e authenticate.php

class Authenticate 
{ 
/** 
* 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)->guest()) { 
     if ($request->ajax()) { 
      return response('Unauthorized.', 401); 
     } else { 
      return redirect()->guest('login'); 
     } 
    } 

    return $next($request); 
} 
} 

e questo è il mio kernel.php

class Kernel extends HttpKernel 
{ 
/** 
* The application's global HTTP middleware stack. 
* 
* These middleware are run during every request to your application. 
* 
* @var array 
*/ 
protected $middleware = [ 
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
]; 

/** 
* The application's route middleware groups. 
* 
* @var array 
*/ 
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, 
    ], 

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

/** 
* The application's route middleware. 
* 
* These middleware may be assigned to groups or used individually. 
* 
* @var array 
*/ 
protected $routeMiddleware = [ 
    'auth' => \App\Http\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
]; 
} 
+0

mostrare il vostro kernel .php pure –

+0

Ho aggiunto il file del kernel –

risposta

6

Rimuovere il middleware da HomeController costrutto:

class HomeController extends Controller 
{ 
    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     //$this->middleware('auth'); 
    } 
} 
9

Aggiungere un'eccezione nella dichiarazione di middleware nel costrutto

Route::get('/', '[email protected]'); 

per la rotta sopra per esenti da autenticazione è necessario passare il nome della funzione per il middleware come qui di seguito

class HomeController extends Controller 
{ 
    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('auth', ['except' => 'index']); 
    } 
} 
+0

Ok su Laravel 5.2 –

+0

Ok su Laravel 5.5 anche –