我在 CakePHP 2 中创建了一个通过 .htaccess 文件进行HTTP保护的应用程序。 <{1}}中的某个目录中已经有例外,效果很好。
webroot
但现在还需要针对特定网址的例外情况,这是某个控制器的查看。我试图简单地添加这一行,但它不起作用,仍然要求用户名和密码。
AuthType Basic
AuthName "My Application"
AuthUserFile /my/application/path/.htpasswd
Require valid-user
SetEnvIf Request_URI "files/photos/" allow
Order allow,deny
Allow from env=allow
Satisfy any
我有SetEnvIf Request_URI "users/confirmation/" allow
和UsersController
方法。关键是一个是物理路径而另一个是“虚拟”。
有什么想法解决这个问题?
答案 0 :(得分:0)
如果您正在使用cakephp Auth,则可以从身份验证中排除控制器的某些操作。所以在特定控制器中写下面的行,例如UsersController。
public function beforeFilter()
{
parent::beforeFilter();
$this->Auth->allow('register','forgot_password','reset_password','password','login','logout');
}
&#13;
即使没有身份验证,也可以访问用allow()编写的操作。如果想要允许整个控制器,则无需传递。例如$这 - &GT; Auth-&GT;允许();
答案 1 :(得分:0)
通过更改包含要通过身份验证忽略的路径的行来解决:
SetEnvIf Request_URI "files/photos/" noauth=1
SetEnvIf Request_URI "users/confirmation/*" noauth=1
然后,使用REDIRECT_
前缀添加例外:
Allow from env=REDIRECT_noauth