0

我有一个 CakePHP 应用程序,我想用密码保护它。棘手的是,所有文件/位置都只能通过密码访问,除了一个特定的地址(一个带有 CakePHP 控制器的函数)

地址是这样的:

http://example.com/MyApp/MyController/MyFunction?MyParam=MyValue

所有其他位置只能通过密码访问

http://example.com/MyApp/MyController/MyOtherFunction
http://example.com/MyApp/MyController/MyOtherFunction
http://example.com/MyApp/MyOtherController/MyOtherFunction

好吧,我首先在根文件中尝试了它.htaccess,但是 CakePHP 的整个重写使它变得非常困难,并且在 .htaccess-Files 中不允许<LocationMatch>使用指令。所以我试了一下<FilesMatch>,但真正的文件总是一样的:index.php. mod_rewrite 将所有地址重写为

http://example.com/MyApp/app/webroot/index.php?url= $1

在下一步中,我在 apache-configuration 中进行了尝试,并将此部分放在那里

<LocationMatch ^/MyApp/MyController/MyFunction.*>
  AuthType Basic
  AuthName "Secure Area"
  AuthUserFile /path/to/.htpasswd
  Require user MyUser
</LocationMatch>

那么正则表达式匹配,但它是错误的方式。它保护 MyFunction 但不保护其余部分。

4

1 回答 1

2

你在使用 .htpasswd 吗?您可能会更好地使用 Cake Auth,然后您可以在适当的控制器中执行此操作:

function beforeFilter() {
    $this->Auth->allow('MyFunction');
}
于 2010-07-15T12:53:21.980 回答