Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel基本HTTP身份验证检查返回False_Php_Laravel_Authentication_Http Authentication - Fatal编程技术网

Php Laravel基本HTTP身份验证检查返回False

Php Laravel基本HTTP身份验证检查返回False,php,laravel,authentication,http-authentication,Php,Laravel,Authentication,Http Authentication,我正在使用Laravel中提供的基本HTTP身份验证登录到我的网站。但是,当我调用Auth::Check()时,即使我已登录,我始终会得到false作为响应 Auth::Check()是否不适用于基本身份验证模型?如果不适用,是否有方法检查基本身份验证以查看用户是否登录 这是我的用户类: namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatab

我正在使用Laravel中提供的基本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):

我的路线:

它在5.2版本中发生了更改

如果要使用session、csrf、cookie ext,则应在路由中使用如下“web”中间件:

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

更多信息:

您是否遵循了?Auth::check正是使用的,您可以发布代码吗?@liampoter看起来您已经使用中间件检查了身份验证。为什么要在控制器中再次检查它?如果您未通过身份验证,Laravel将不允许您进入控制器方法。@parrker9这只是为了检查调用该方法时是否返回了值。我想使用Auth::Check的是,如果检查在我的视图代码中通过,则输出某些HTML元素。您还可以添加路由吗?到目前为止,您的代码似乎是正确的。当我通过web中间件路由控制器和视图时,它根本不会命中Authenticate.php,并且允许在用户未登录和验证的情况下打开控制器。我使用数据库会话,但我也尝试了具有相同结果的文件。直到我在“web”路由组中放置了一个带有“auth”中间件的路由,该路由才对我起作用:route::group(['middleware'=>['web']],function(){route::get('/dashboard',['middleware'=>'auth',uses'=>'dashboard@index']); });
/**
 * 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',
],
];