2016-12-20 4 views

Antwort

0

diese Lösung ist gut für Laravel 5,0 ersten beiden Middleware in app/http/kernel.php .First Middleware definieren müssen lesssession ist. lesssession für Strecke ist, die nicht brauchen Sitzung .und zweite ist hasssession Middleware .hassession ist gut für die Route, die Sitzung benötigen:

<?php namespace App\Http; 

use Illuminate\Foundation\Http\Kernel as HttpKernel; 

class Kernel extends HttpKernel { 

    /** 
    * The application's global HTTP middleware stack. 
    * 
    * @var array 
    */ 
    /** 
    * The application's route middleware. 
    * 
    * @var array 
    */ 

    protected $routeMiddleware = [ 
     'auth' => 'App\Http\Middleware\Authenticate', 
     'hassession' => [ 
      'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode', 
      'Illuminate\Cookie\Middleware\EncryptCookies', 
      'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 
      'Illuminate\Session\Middleware\StartSession', 
      'Illuminate\View\Middleware\ShareErrorsFromSession', 
      'App\Http\Middleware\VerifyCsrfToken', 
     ], 
     'lesssession' => [] , 
     'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', 
     'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', 
    ]; 

} 

Schritt 2: Put-Route in zwei Gruppe bearbeiten app/http/route.php:

<?php 
Route::group(['middleware' => ['lesssession']], function() 
{ 
    Route::get('download', function(){ 
     // do some stuff for download file 
    }); 
}); 
Route::group(['middleware' => ['hassession']], function() 
{ 
    // all other route that need session 
}); 

?> 
1

Erstellen Sie einen neuen Route/Middleware-Typ für den sitzungslosen Zugriff. Fügen Sie dazu eine neue Middlewaregruppe in Ihrem HTTP/Kernel hinzu, die die StartSession Middleware nicht enthält, fügen Sie dann eine neue Routendatei hinzu, um alle Ihre Downloadlinks zu speichern, und registrieren Sie dann Ihre neue Routendatei in Ihrer RouteServiceProvider.

Bearbeiten Sie die $middlewareGroups Array in app/Http/Kernel.php wie folgt aussehen:

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', 
    ], 

    'sessionless' => [ 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Routing\Middleware\SubstituteBindings::class, 
    ], 

]; 

bearbeiten Sie dann Ihre app/Providers/RouteServiceProvider Ihre neu erstellte Route Datei zur Karte:

Route::group([ 
    'middleware' => 'sessionless', 
    'namespace' => $this->namespace, 
    'prefix' => 'download', 
], function ($router) { 
    require base_path('routes/downloads.php'); 
}); 

Jetzt eine Datei in Ihrem /routes hinzufügen Verzeichnis mit dem Namen downloads.php, und fügen Sie dort Ihre herunterladbaren Routen hinzu. Wenn Sie einen Platzhalter verwenden, um zu analysieren, welche Datei für sie suchen, können Sie, oder Sie können explizit auflisten, was Routen einen Download auslösen:

Route::get('test', function(){ 
    $file = '/path/to/test/file'; 
    return response()->download($file); 
}); 

Route::get('{fileName}', function($fileName){ 
    $file = '/path/to/' . $fileName; 
    return response()->download($file); 
}); 

Dies bezieht sich nicht kopflos Genehmigung verwendet wird, die Sie würde benötigen, wenn Sie keinen unbefugten Zugang zu allen Ihren sessionless Wegen wünschen.

+0

Stimmen Sie zu, Ihre Antwort ist flexibler und korrekter, Ihre Art, wie Sie mehrere routenlose Sitzungen verwenden können, Danke. – Froxz

+0

Dies ist für Laravel 5.0 oder Laravel 5.3? – adib16

+0

Die Struktur würde für beide funktionieren, aber Sie würden wahrscheinlich die Download-Routen-Datei in 'app/Http/routes' anstelle von' routes/' –

Verwandte Themen