【问题标题】:How to configure in Apache an exception to password protection for a CakePhp App?如何在 Apache 中配置 CakePhp 应用程序的密码保护例外?
【发布时间】:2010-07-15 10:00:38
【问题描述】:

我有一个 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-configuration 中进行了尝试,并将此部分放在那里

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

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

【问题讨论】:

  • 我认为你只需要反转你的正则表达式模式的含义。我找不到这样做的简单方法,尽管插入符号似乎意味着“从字符串开头匹配”和“反转模式”。我只是不是 100% 确定反转模式的语法。

标签: apache .htaccess cakephp password-protection locationmatch


【解决方案1】:

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

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

【讨论】:

  • 我假设 OP 有他们想要使用 htpasswd 保护而不是登录系统的原因。但我支持你——我会把它放到应用程序逻辑中,这样你就可以更好地控制用户会话。
  • 首先我认为使用 .htpasswd 会更容易......现在我使用 Cake Auth 并且它与 allow() 一起使用。谢谢
猜你喜欢
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多