I'm using the basic HTTP authentication provided in Laravel to log in to my website. However, when I call Auth::Check()
I always get false as the response even though I am logged in.
Does Auth::Check()
not work with the basic authentication model and if not, is there any way to check the basic authentication to see if a user is logged in?
This is my user class:
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 is the segment of code where I set the authentication filter to use
$this->middleware('auth.basic', ['only' => ['create', 'store', 'edit', 'update', 'destroy']]);
And this is my Auth::Check()
call (Always prints 0):
public function show($id)
{
echo \Auth::check() ? '1' : '0';
die();
#.......
}
It changed in 5.2 version.
If you will use session, csrf, cookie ext. you should to use "web" middleware like this in your routes:
Route::group(['middleware' => ['web']], function () {
//
});
And you can see in your project the new kernel.php file is like this:
/**
* 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',
],
];
More info: https://laravel.com/docs/5.2/releases
来源:https://stackoverflow.com/questions/34841031/laravel-basic-http-auth-check-returning-false