Sentinel :: check()总是在中间件中返回FALSE

时间:2017-11-26 14:49:14

标签: php laravel laravel-5 cartalyst-sentinel

这是我的路线:

Route::group(['middleware' => ['web']], function () {
    Route::get('/xx', 'xx\yy@zz');

这是我在Kernel.php中的修改:

protected $middlewareGroups = [
    'web' => [
    \Keevitaja\Linguist\LocalizeUrls::class,

LocalizeUrls.php:

public function handle($request, Closure $next)
    {
        if ($this->linguist->hasDefaultSlug() && $this->linguist->isDefaultDenied()) {
            abort(404);
        }

        if (Sentinel::check())
        {
            dd("logged in");
        }

        dd("NOT logged in");

我正在使用Sentinel和Linguist进行身份验证和本地化。 我想得到系统语言'从用户模型:检查用户是否已登录,如果他是,我想从数据库中获取他的首选语言,然后将其传递给语言学家:

$this->linguist->localize('fr');

不幸的是,Sentinel:check()总是在这个中间件中返回FALSE。在我自己的中间件中,它运行良好。

当然,我正在使用正确的Sentinel Facade,因为$sentinel = Sentinel::findById(1);会返回有效的结果。

1 个答案:

答案 0 :(得分:1)

问题是由于$middlewareGroups位于第一位置的Kernel.php \Keevitaja\Linguist\LocalizeUrls::class中的顺序造成的。