Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel Basic HTTP Auth Check Returning False

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();
    #.......
}

My routes: Routes

like image 977
Liam Potter Avatar asked Jan 17 '16 17:01

Liam Potter


People also ask

What does Auth :: check () do?

Auth::check() defers to Auth::user() . It's been that way since as long as I can remember. In other words, Auth::check() calls Auth::user() , gets the result from it, and then checks to see if the user exists. The main difference is that it checks if the user is null for you so that you get a boolean value.

What is auth ()- user () in Laravel?

Laravel includes built-in authentication and session services which are typically accessed via the Auth and Session facades. These features provide cookie-based authentication for requests that are initiated from web browsers. They provide methods that allow you to verify a user's credentials and authenticate the user.

What is Auth :: Routes () in Laravel?

Auth::routes() is just a helper class that helps you generate all the routes required for user authentication. You can browse the code here https://github.com/laravel/framework/blob/5.3/src/Illuminate/Routing/Router.php instead.

What is auth check Laravel?

To determine if the user is already logged into your application, you may use the check method on the Auth facade, which will return true if the user is authenticated: use Illuminate\Support\Facades\Auth; if (Auth::check()) { // The user is logged in... }


1 Answers

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

like image 178
Erkan Özkök Avatar answered Oct 20 '22 15:10

Erkan Özkök