Php Laravel在x次请求后注销用户
在我添加以下显示图像的路径之前,应用程序一直按预期运行:Php Laravel在x次请求后注销用户,php,laravel,laravel-5,Php,Laravel,Laravel 5,在我添加以下显示图像的路径之前,应用程序一直按预期运行: Route::get('/images/workers/{imageName}', function($imageName){ if(Auth::check()){ // Intervention using GD does not have functionality for bmp images //return \Image::make(getenv('IMAGE_DIR') . $imag
Route::get('/images/workers/{imageName}', function($imageName){
if(Auth::check()){
// Intervention using GD does not have functionality for bmp images
//return \Image::make(getenv('IMAGE_DIR') . $imageName)->response();
$filename = getenv('IMAGE_DIR') . $imageName;
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
header("content-type: image/bmp");
echo $contents;
} else {
return \Image::make(getenv('IMAGE_DIR') . 'denied.png')->response();
}
});
在我的一个控制器中,我获取包含这些图像链接的记录,并将它们显示在带有分页的表中。我使用
元素一次显示50条记录,以显示图像(即记录的缩略图)。我通常可以按预期显示前几页,但随后我将开始显示我的拒绝.png
图像,一旦出现这种情况,我发现我已注销,必须重新登录
我阅读并得出结论,我有一个种族状况发生,不知何故破坏了会话,导致帐户注销。然后,我在我的数据库中创建了一个sessions
表,并将laravel中的会话驱动程序更改为database
,但它看起来不像是在使用会话驱动程序进行身份验证?对吗?如果是这样的话,这是一种竞赛条件,我怎么才能绕过它呢
使用laravel 5.2.45
编辑
另外值得注意的是,该环境正在使用nginx/phpfpm。可能是我的大多数请求都是由一个工作线程处理的,但偶尔它们会由另一个工作线程处理,而该线程不知道现有的身份验证会话吗?或者,哪一个工作线程通过fpm处理请求并在它们之间保持身份验证会话无关紧要吗?似乎用web中间件包装此特定路由解决了问题:
Route::group(['middleware' => ['web']], function () {
Route::get('/images/workers/{imageName}', function($imageName){
if(Auth::check()){
// Intervention using GD does not have functionality for bmp images
//return \Image::make(getenv('IMAGE_DIR') . $imageName)->response();
$filename = getenv('IMAGE_DIR') . $imageName;
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
header("content-type: image/bmp");
echo $contents;
} else {
return \Image::make(getenv('IMAGE_DIR') . 'denied.png')->response();
}
});
});