0

我想重写所有http://models.example.com/*请求http://models.example.com/handler.php?requested_url=*

然后,handler.php将检查我的$_SESSION变量以查看用户是否已登录。如果用户已登录,handler.php则将重定向到requested_url.

如果用户未登录,handler.php则将使用正则表达式来查找requested_url权限规则数组 ( ruleList.php) 之间的匹配项。如果handler.php看到有一条规则允许未登录的用户访问,requested_url那么它会重定向到requested_url,否则它会重定向到登录页面。

我的问题是:如何区分初始请求和重定向?(以避免无限循环)。我可以附加一个变量&already_processed=true,但这是完全不安全的。

我会使用 mod_auth,但问题是我希望可以通过网站的管理面板 ( ruleList.php) 设置权限。权限规则可能很复杂,设置它们的人不必在服务器的 httpd.conf 文件中四处寻找。mod_auth 的另一个问题是更改需要重置服务器。

我将不胜感激有关该主题的任何意见!

4

1 回答 1

1

...将重定向到...

重定向总是不安全的。它会将操作传递回客户端(浏览器),然后结束请求。

这意味着,下一个请求是一个新请求,并且 Apache 和您的 PHP 脚本都不知道该请求是否是新请求,直到您将其添加到 session

但是,由于您希望您的 apache 网络服务器为资源提供服务,因此您需要在 apache 中验证会话。这意味着您需要扩展 apache,以便您可以检查一些环境变量或类似的重写条件。

可以想象,这有点复杂。

正如您提到的 mod_auth,IIRC 您可以查询 Mysql 数据库。完成后,您甚至可以针对请求 URI 进行验证。在您的情况下,这可能是一个简单的变体。

于 2012-09-23T22:18:29.640 回答