2016-01-17 1 views
7

J'utilise l'authentification HTTP de base fournie dans Laravel pour me connecter à mon site Web. Cependant, quand je l'appelle Auth::Check() je reçois toujours faux comme la réponse même si je suis connecté.Laravel Basic Authentification HTTP Authentification Retour Faux

Est-ce que Auth::Check() fonctionne pas avec le modèle d'authentification de base et si non, est-il un moyen de vérifier l'authentification de base pour voir si un utilisateur est connecté?

Ceci est ma classe d'utilisateur:

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'; 
    } 
} 

C'est le segment de code où je mets le filtre d'authentification à utiliser

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

Et voici mon Auth::Check() appel (imprime toujours 0):

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

Mes itinéraires: Routes

+0

Avez-vous suivi les étapes de https://laravel.com/docs/5.1/authentication#http-basic-authentication? –

+0

Auth :: check est exactement ce qui est utilisé, pourriez-vous poster votre code? –

+0

@LiamPotter On dirait que vous vérifiez déjà l'authentification en utilisant le middleware. Pourquoi vérifiez-vous à nouveau dans le contrôleur? Si vous n'êtes pas authentifié, Laravel ne vous laissera pas entrer dans la méthode du contrôleur. – parrker9

Répondre

3

Il a changé dans la version 5.2.

Si vous allez utiliser session, csrf, cookie ext. vous devez utiliser le middleware « web » comme celui-ci dans vos itinéraires:

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

Et vous pouvez voir dans votre projet, le nouveau fichier est kernel.php comme ceci:

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

Plus d'info: https://laravel.com/docs/5.2/releases

+0

Lorsque je route un contrôleur et que je le visualise via un middleware Web, il ne renvoie pas du tout Authenticate.php et il permet d'ouvrir le contrôleur sans que l'utilisateur soit connecté et authentifié. J'utilise des sessions de base de données, mais j'ai également essayé des fichiers avec les mêmes résultats. – mal

+0

Cela n'a pas fonctionné pour moi jusqu'à ce que j'aie placé un itinéraire avec le middleware "auth" dans le groupe de routage "web" comme: Route :: group (['middleware' => ['web']], function() { Route :: get ('/ dashboard', ['middleware' => 'auth', 'uses' => 'tableau de bord @ index']); }); – mal