在我的Auth中我有:
class AuthController extends Controller {
public function __construct(Guard $auth, Registrar $registrar)
{
$this->auth = $auth;
$this->registrar = $registrar;
$this->middleware('guest', ['except' => 'getLogout']);
}
public function checkSession()
{
return 'test';
if (!Auth::check()){
return false;
}
//return Response::json(['guest' => Auth::guest()]);
}
}
如果用户的会话已过期,则会自动将用户重定向回登录屏幕:
$(function () {
setInterval(function checkSession() {
$.get('/check-session', function (data) {
if (data.guest) {
location.reload();
}
});
}, 5000);
});
然而它不起作用。 checkSession请求什么都不返回,然后返回302.另一个请求也会立即发生,返回登录屏幕的源代码。
routes.php文件
Route::group(['namespace' => 'Auth'], function () {
Route::get('/', 'AuthController@getLogin');
Route::post('login', ['as' => 'login', 'uses' => 'AuthController@postLogin']);
Route::get('/logout', ['as' => 'logout', 'uses' => 'AuthController@getLogout']);
Route::get('check-session', ['as' => 'session.check', 'uses' => 'AuthController@checkSession']);
});
Route::group(['middleware' => 'auth'], function () {
...
});
我试过把它放在上面的组中,但它给出了相同的结果。
答案 0 :(得分:4)
我做了以下工作并且有效:
$this->middleware('guest', ['except' => ['getLogout', 'checkSession']]);
而不是:
$this->middleware('guest', ['except' => 'getLogout']);