【问题标题】:Protect files in directory using authentication script in php/apache使用 php/apache 中的身份验证脚本保护目录中的文件
【发布时间】:2010-07-29 08:52:08
【问题描述】:

我正在寻找一种方法来告诉 Apache,如果有来自某个目录的文件请求,它应该首先运行一个 php 脚本来验证用户是否已登录。 我知道我可以将目录放在 docroot 之外并让 php 脚本处理身份验证和文件下载,但是因为这些是尝试打开其他 flash 文件的 flash 文件,所以它必须是 docroot 中的目录,并且文件应该不必由 php 脚本发送。 在旧设置中,我们使用的是 mod_auth_script(http://sourceforge.net/projects/mod-auth-script/),但由于这是一个相当晦涩的 apache 模块,如果可能的话,我宁愿有一个更通用的解决方案。

【问题讨论】:

    标签: php apache authentication


    【解决方案1】:

    您可以使用 .htaccess 和 mod_rewrite 将请求重定向到 php 脚本。尝试一些谷歌搜索,你会发现很多例子。

    .htaccess 内容示例:

    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule ([0-9a-z-_]+)\.swf$ checkForAuth.php?&file=$1 [L]
    

    当有人试图访问 *.swf 文件时,这将调用 checkForAuth.php。在 checkForAuth.php 中,您需要检查您的会话,从 $_GET['file'] 读取内容,设置正确的标题(Flash 的内容类型)并输出请求的 SWF 文件的内容。

    【讨论】:

    • 好吧,我不想重定向,因为 Flash 文件需要直接访问。 Apache 应该只检查用户是否可以访问该目录(使用基于 PHP 的身份验证来检查会话),仅此而已。否则启动的 flash 文件无法拉入其他 flash 文件
    • 在用户端不会看到重定向。 URL 将保持不变,但内容将通过 PHP 文件提供,该文件将检查会话。
    • 啊,对了,所以 Flash 文件仍然只是请求 /files/foo.swf.. 请求链接是不是太过分了?
    • 这不是网站性能的好方法(我们必须在php中读取文件)。 httpd.conf 和 .htaccess 有 Apache 服务器级别的身份验证和授权指令。我们可以将 AuthType Form 与 A​​uthFormProvider dbd(数据库驱动程序)和 DBDriver mysql 和 DBDParams "..." 和...结合起来,然后我们只需要一个 mysql 表来保持上传或下载文件的 auth un pass。凭据必须在页面中使用(下载或上传并在具有和过期时间的 dbtable 中设置以与 mysql 时间戳进行比较)。而已。很简单:)
    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 2018-01-25
    • 2013-09-19
    相关资源
    最近更新 更多