我已经编写了一个中间件,以便用户登录后不能再次进入登录页面。如果已经登录,它将重定向到管理面板。
这是代码:
class RevalidateBackHistory
{
public function handle($request, Closure $next)
{
$response = $next($request);
return $response->header('Cache-Control','nocache, no-store, max-age=0, must-revalidate')
->header('Pragma','no-cache')
->header('Expires','Fri, 01 Jan 1990 00:00:00 GMT');
}
}
我已经在名为NoticeController的控制器中调用它
public function __construct()
{
$this->middleware('auth');
$this->middleware('revalidate'); //this is the middleware
}
我还在此控制器中定义了一个函数来下载文件,并且代码是
public function downloadFile($id)
{
$notice = new Notice();
$data = $notice->where('id',$id)->first();
if (file_exists(public_path().'/uploads/files/'.$data->file))
{
return response()->download(public_path().'/uploads/files/'.$data->file);
}
else
{
Session()->flash('message.notice',"File not found");
return redirect('admin/notice/info');
}
}
下载功能是完美的,我也在另一个控制器中使用了此功能。但是,当我调用downloadFile()函数时,该控制器内部发生了问题,它给出了以下异常。
(1/1)致命错误
调用未定义的方法Symfony \ Component \ HttpFoundation \ BinaryFileResponse :: header()
在RevalidateBackHistory.php中(第20行)
在Pipeline.php中的RevalidateBackHistory-> handle(object(Request),object(Closure))(行148)
如果我从构造函数中删除了重新验证中间件,则该功能可以正常工作。该问题的解决方案是什么?
参考方案
您应该使用以下代码编辑handle
函数。
$response = $next($request);
$headers = [
'Cache-Control' => 'nocache, no-store, max-age=0, must-revalidate',
'Pragma','no-cache',
'Expires','Fri, 01 Jan 1990 00:00:00 GMT',
];
foreach($headers as $key => $value) {
$response->headers->set($key, $value);
}
return $response;
用于在RevalidateBackHistory中间件文件中设置标题
php session header()重定向后丢失 - php这是我第一次尝试创建会话。另外,成功登录后,我使用header()函数重定向页面,但是在重定向的页面上,我不再有会话。有代码:建立工作阶段:function userLogin($user){ session_start(); $_SESSION['username'] = $user; header("Location: /~…
如何停用浏览器中的缓存? - php例如,如果退出Yahoo邮件,然后单击“后退”按钮,它将不会加载最后一页,而是会将您重定向到登录页面。我必须使用PHP代码来执行此操作,而我正在使用CodeIgniter。一些朋友告诉我禁用缓存,但这将是一件坏事,因为我的系统中有很多映像,并且每次都下载它们是不好的。我该如何使用PHP? 参考方案 使用以下代码禁用页面缓存:http://php.net/ma…
面试问题:标题前可以有回声吗? - php我出现了php测试,他们被问到一个我找不到答案的问题。问题是这样的。echo "MESSI is injured!!"; header("Location:somepage.php"); 采访者希望标题和回声都写在同一页上。我不知道怎么可能,它应该会出现一些错误标头已由发送(输出开始于.....真的有可能将echo和h…
PHP-将日期插入日期时间字段 - php我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数
如何通过php标头重定向传递在GET字符串中接收的变量? - php用户提交表单后,我正在从Aweber接收GET字符串中的值。我将变量发送给我,然后将其提交到SMS网关,以通过短信通知第三方提交。这是我的问题。我需要将在php标头中执行传出SMS命令的页面重定向到另一个页面,该页面最终显示从Aweber发送的GET变量。我可以在第一页中检索变量及其值。如何将它们传递到第二页?这是我在第一页(sms.php)上用来收集Awe…