2016-01-17 22 views
7

Sto utilizzando l'autenticazione HTTP di base fornita in Laravel per accedere al mio sito web. Tuttavia, quando chiamo Auth::Check() ottengo sempre falsa come la risposta, anche se sono entrato.Laravel Basic HTTP Auth Controlla Restituzione di False

Vuol Auth::Check() non funziona con il modello di autenticazione di base e se non, c'è un modo per controllare l'autenticazione di base per vedere se un utente è loggato?

Questa è la mia classe di utente:

namespace App; 

use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'email', 'password', 
    ]; 

    /** 
    * The attributes excluded from the model's JSON form. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 

    public function getRememberToken() 
    { 
     return $this->remember_token; 
    } 

    public function setRememberToken($value) 
    { 
     $this->remember_token = $value; 
    } 

    public function getRememberTokenName() 
    { 
     return 'remember_token'; 
    } 
} 

Questo è il segmento di codice in cui ho impostato il filtro di autenticazione da utilizzare

$this->middleware('auth.basic', ['only' => ['create', 'store', 'edit', 'update', 'destroy']]); 

E questo è il mio Auth::Check() chiamata (stampa sempre 0):

public function show($id) 
{ 
    echo \Auth::check() ? '1' : '0'; 
    die(); 
    #....... 
} 

I miei itinerari: Routes

+0

Hai seguito i passaggi da https://laravel.com/docs/5.1/authentication#http-basic-authentication? –

+0

Auth :: check è esattamente ciò che viene utilizzato, potresti pubblicare il tuo codice? –

+0

@LiamPotter Sembra che tu stia già verificando l'autenticazione utilizzando il middleware. Perché lo stai controllando di nuovo nel controller? Se non sei autenticato, Laravel non ti lascerà all'interno del metodo del controller. – parrker9

risposta

3

È stato modificato nella versione 5.2.

Se si utilizzerà la sessione, csrf, cookie ext. si dovrebbe utilizzare il middleware "web" come questo in vostri itinerari:

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

E si può vedere nel progetto del nuovo file kernel.php è come questo:

/** 
* 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', 
], 
]; 

Maggiori informazioni: https://laravel.com/docs/5.2/releases

+0

Quando instrado un controller e visualizzo tramite il middleware web, questo non ha alcun effetto su Authenticate.php e consente di aprire il controller senza che l'utente sia loggato e autenticato. Uso le sessioni di database, ma ho anche provato i file con gli stessi risultati. – mal

+0

Non ha funzionato fino a quando non ho inserito una route con middleware "auth" all'interno del gruppo di percorsi "web" come: Route :: group (['middleware' => ['web']], function() { Route :: get ('/ dashboard', ['middleware' => 'auth', 'uses' => 'dashboard @ index']); }); – mal