Как настроить в Apache исключение для защиты паролем для приложения CakePhp? - PullRequest
0 голосов
/ 15 июля 2010

У меня есть приложение 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 -File, но вся перезапись CakePHP делает его очень трудным, а в .htaccess-Files директива <LocationMatch> не допускается.Поэтому я попробовал это с <FilesMatch>, но реальный файл всегда один и тот же: index.php.mod_rewrite переписывает все адреса в

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

На следующем шаге я попробовал это в apache-конфигурации и поместил туда этот раздел

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

Хорошо, регулярное выражение совпало, но это был неправильный путь.Он защищает MyFunction, но не остальные.

1 Ответ

2 голосов
/ 15 июля 2010

Вы используете .htpasswd? Возможно, вам лучше использовать Cake Auth, тогда вы можете сделать это в соответствующем контроллере:

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