2016-01-17 7 views
7

Я использую базовую HTTP-аутентификацию, предоставленную в Laravel, для входа на мой сайт. Однако, когда я называю 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

Когда я маршрутизирую контроллер и просматриваю его через посредство промежуточного программного обеспечения, он не попадает на Authenticate.php и позволяет открывать контроллер без регистрации пользователя и проверки подлинности. Я использую сеансы базы данных, но я также пробовал файлы с одинаковыми результатами. – mal

+0

Это не сработало для меня, пока я не разместил маршрут с промежуточным программным обеспечением «auth» внутри группы маршрутов «сеть» следующим образом: Route :: group (['middleware' => ['web']], function() { Маршрут :: get ('/ dashboard', ['middleware' => 'auth', 'uses' => 'dashboard @ index']); }); – mal

Смежные вопросы