如何在Apache中为CakePhp应用程序配置密码保护异常?

如何在Apache中为CakePhp应用程序配置密码保护异常?,apache,.htaccess,cakephp,password-protection,locationmatch,Apache,.htaccess,Cakephp,Password Protection,Locationmatch,我有一个CakePHP应用程序,我想用密码保护它。棘手的是,除了一个特定的地址(一个带有CakePHP控制器的函数)之外,所有文件/位置都只能通过密码访问 地址如下: 所有其他位置只能通过密码访问 嗯,我首先在root.htaccess-文件中尝试了它,但是CakePHP的整个重写过程让它变得非常困难,在.htaccess文件中不允许使用指令。所以我尝试了,但是真正的文件总是一样的:index.php。mod_rewrite将所有地址重写为 一美元 在下一步中,我在apache配置中尝试

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

地址如下:

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



嗯,我首先在root
.htaccess
-文件中尝试了它,但是CakePHP的整个重写过程让它变得非常困难,在.htaccess文件中不允许使用
指令。所以我尝试了
,但是真正的文件总是一样的:
index.php
。mod_rewrite将所有地址重写为

一美元

在下一步中,我在apache配置中尝试了它,并将此部分放在那里

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

AuthType Basic
AuthName“安全区域”
AuthUserFile/path/to/.htpasswd
需要用户MyUser

正则表达式匹配,但它是错误的方式。它保护我的功能,但不保护其他功能。

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

function beforeFilter() {
    $this->Auth->allow('MyFunction');
}

我假设OP有理由使用htpasswd保护而不是登录系统。但我同意你的观点——我会把它放到应用程序逻辑中,这样你就可以更好地控制用户会话。。。现在我使用Cake Auth,它与allow()一起工作。谢谢,我认为您只需要颠倒regexp模式的含义。我找不到一个简单的方法来做到这一点,尽管插入符号似乎同时表示“从字符串开始匹配”和“反转模式”。我只是不能100%确定反转模式的语法。