2016-01-17 26 views
7

Laravelで提供されている基本的なHTTP認証を使用して、自分のWebサイトにログインしています。しかし、私はAuth::Check()を呼び出すときに、私はいつも私がログインしていていても応答としてを得る。Laravel Basic HTTP Auth Check False返信

Auth::Check()は、基本的な認証モデルとしていない場合は動作しません、確認するために基本認証をチェックする方法はありますユーザーがログインしている場合

これは私のユーザークラスです:

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

は、これは私が

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

を使用するために認証フィルタを設定するコードのセグメントであり、これは私のAuth::Check()コール(常に0を出力します)です。

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

私のルート: Routes

+0

https://laravel.com/docs/5.1/authentication#http-basic-authenticationの手順に従っていますか? –

+0

Auth :: checkは正確に何が使用されているのですか、コードを投稿できますか? –

+0

@LiamPotterミドルウェアを使用して認証をチェックしているようです。なぜあなたはコントローラでそれをもう一度チェックしていますか?あなたが認証されていないなら、Laravelはあなたをコントローラメソッドの中に入れません。 – parrker9

答えて

3

5.2バージョンで変更されました。

セッションを使用する場合は、csrf、cookie ext。あなたのルートでは、このような「ウェブ」のミドルウェアを使用する必要があります。

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

をそして、あなたは新しいkernel.phpファイルはこのようなものです、あなたのプロジェクトで見ることができます:

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

さらに詳しい情報:https://laravel.com/docs/5.2/releases

+0

Webミドルウェア経由でコントローラとビューをルーティングすると、Authenticate.phpがすべてヒットせず、ログインして認証されずにコントローラを開くことができます。私はデータベースセッションを使用しますが、同じ結果を持つファイルも試しました。 – mal

+0

"web"ルートグループ内に "auth"ミドルウェアを含むルートを配置するまで、それは私のためには機能しませんでした。 Route :: group(['middleware' => ['web']]、function() { Route :: get( '/ dashboard'、['ミドルウェア' => 'auth'、 '使用' = 'ダッシュボード@インデックス']); }); – mal

関連する問題