我有以下问题:
我的 Catalyst Webservice 使用 Log4Perl 生成一个记录所有用户活动的日志文件。
我怎样才能将此文件提供为仅供管理员下载?根目录是没有选择的,因为每个人都可以下载它。我需要一个安全的方式。管理员在 Web 服务中有一个单独的区域来管理用户。
不幸的是,使用 ssh / sftp 也是没有选择的,日志必须通过 web 服务可用。
我有以下问题:
我的 Catalyst Webservice 使用 Log4Perl 生成一个记录所有用户活动的日志文件。
我怎样才能将此文件提供为仅供管理员下载?根目录是没有选择的,因为每个人都可以下载它。我需要一个安全的方式。管理员在 Web 服务中有一个单独的区域来管理用户。
不幸的是,使用 ssh / sftp 也是没有选择的,日志必须通过 web 服务可用。
要按照@memowe 的建议构建日志文件发送操作,您需要一个控制器来执行以下操作:
$filehandle
来读取日志文件。$c->res->content_type(something)
和$c->res->header('Content-Disposition' => 'attachment')
强制将响应视为浏览器的下载,以显示“另存为...”对话框。$c->res->body($filehandle)
为返回日志文件的内容并绕过您的视图渲染器(模板或其他)。希望这能让你上路。
对不起,这几天我真的很忙。
感谢您的帮助,这就是我构建的解决方案并且它有效:-)
sub log : Chained('base_admin') PathPart('log') Args(0) {
my ( $self, $c ) = @_;
my $logfile = $c->path_to('test.log');
$c->response->header('Content-Type' => 'text/plain');
$c->response->header('Content-Disposition' => 'attachment; filename=test.log');
$c->serve_static_file($logfile);
}