Cog*_*gsy 9 php authentication apache-2.2
我有一个使用 PHP 会话进行身份验证的站点。有一个我想限制访问的目录,它不使用任何 PHP,它只是充满了静态内容。
我只是不知道如何在没有每个请求都通过 PHP 脚本的情况下限制访问。有什么方法可以让 Apache 检查会话凭据并限制访问,如基本身份验证?
除非您更改了设置,否则 PHP 会话数据以其自己的 serialize() 格式的变体存储在临时目录中,并且不使用 PHP 本身就不容易获得该数据。
不幸的是,您似乎希望在动态授权每个请求的同时获得静态服务文件的速度,这并不是真正兼容的目标。您可以通过拥有一个超轻 PHP 脚本来进行妥协,然后您使用 mod_rewrite 将对其中的文件的请求重写为,尽管事情很好。超级简单的例子:
.htaccess:
RewriteEngine On
RewriteMap auth prg:auth.php
RewriteRule (.*) ${auth:$1}
Run Code Online (Sandbox Code Playgroud)
auth.php:
#!/usr/bin/php
<?PHP
set_time_limit(0); # This program needs to run forever.
$stdin = fopen("php://stdin","r"); # Keeps reading from standard in
while (true) {
$line = trim(fgets($stdin));
if (isset($_SESSION['USER_LOGGED_IN'])) {
echo $line\n";
} else {
echo "authfailed.html\n";
}
}
Run Code Online (Sandbox Code Playgroud)
值得注意的是,该 PHP 脚本将永远运行,因此我认为如果您更改它,则需要重新启动 apache。
这一切都未经测试,但这大致是我认为您必须进入的方向。
参考:
| 归档时间: |
|
| 查看次数: |
15329 次 |
| 最近记录: |