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

最初に root .htaccess-File で試してみましたが、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 に答える