10

我一直在使用Sentinel在 Laravel 5.2 上实现一个简单的身份验证系统。

// Route : /login
$success = Sentinel::authenticate(array(
   'email'    => $email,
   'password' => $password,
));

echo $success ? 'Login success' : 'Login failed';

所以,上面的代码Login success在验证码之后输出。但是,登录状态不会持续到其他请求。即:如果我从其他请求中检查身份验证状态,则表示我没有登录!

// Route : test-login
echo \Sentinel::check() ? 'User is logged in' : 'User is not logged in';

我什至尝试使用\Auth::attempt. 但是,这也给了同样的东西。

非常感谢您对此的任何帮助。

4

1 回答 1

21

在 Laravel 5.2 中,您需要将webgroup middlewere 应用于您不想让会话工作的所有路由。这是 Laravel 5.1 的主要变化。

请查看https://laravel.com/docs/5.2/routing#basic-routing

默认的 routes.php 文件现在看起来像这样:

Route::group(['middleware' => ['web']], function () {
    // here you should put your routes
});

编辑

您也可以直接在https://github.com/laravel/laravel/blob/master/app/Http/Kernel.php中查看middlewareGroups属性以了解为web组中间件触发了哪些中间件

于 2015-12-30T12:26:03.520 回答