4

我有以下问题:

我的 Catalyst Webservice 使用 Log4Perl 生成一个记录所有用户活动的日志文件。

我怎样才能将此文件提供为仅供管理员下载?根目录是没有选择的,因为每个人都可以下载它。我需要一个安全的方式。管理员在 Web 服务中有一个单独的区域来管理用户。

不幸的是,使用 ssh / sftp 也是没有选择的,日志必须通过 web 服务可用。

4

2 回答 2

1

要按照@memowe 的建议构建日志文件发送操作,您需要一个控制器来执行以下操作:

  1. 验证登录用户是管理员,如果不是则重定向。
  2. 创建一个标量$filehandle来读取日志文件。
  3. 使用$c->res->content_type(something)$c->res->header('Content-Disposition' => 'attachment')强制将响应视为浏览器的下载,以显示“另存为...”对话框。
  4. 设置$c->res->body($filehandle)为返回日志文件的内容并绕过您的视图渲染器(模板或其他)。

希望这能让你上路。

于 2012-11-29T01:08:47.613 回答
0

对不起,这几天我真的很忙。
感谢您的帮助,这就是我构建的解决方案并且它有效:-)

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);
}
于 2012-12-04T11:08:39.613 回答