调用RevalidateBackHistory.php中未定义的方法Symfony \ Component \ HttpFoundation \ BinaryFileResponse::header() - php

我已经编写了一个中间件,以便用户登录后不能再次进入登录页面。如果已经登录,它将重定向到管理面板。

这是代码:

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…