2014-12-02 6 views
0

У меня есть приложение, сделанное в CakePHP 2, которое имеет защиту HTTP через .htaccess файл. У вас уже есть исключение в определенном каталоге в webroot и работает хорошо.Исключить проверку подлинности HTTP от конкретного контроллера

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 

Но теперь нужно исключение для конкретного URL, который является Посмотреть определенного контроллера. Я попытался просто добавить эту строку, но она не работала, все еще запрашивая имя пользователя и пароль.

SetEnvIf Request_URI "users/confirmation/" allow 

У меня есть UsersController и confirmation() метод. Дело в том, что это физический путь, а другой - «виртуальный».

Любая идея для решения этой проблемы?

ответ

0

решаемые путем изменения строки, содержащие пути, которые будут игнорироваться аутентификации:

SetEnvIf Request_URI "files/photos/" noauth=1 
SetEnvIf Request_URI "users/confirmation/*" noauth=1 

, а затем, добавив исключение с префиксом REDIRECT_:

Allow from env=REDIRECT_noauth 
0

Если вы используете cakephp Auth, то вы можете исключить некоторые действия контроллера из проверки подлинности. Поэтому напишите строку ниже в конкретном контроллере, например. UsersController.

public function beforeFilter() 
 
\t { 
 
\t \t parent::beforeFilter(); 
 
\t \t $this->Auth->allow('register','forgot_password','reset_password','password','login','logout'); 
 
\t }

действия, записанные в позволяют() можно получить даже после того, нет никакой аутентификации. Не пропускайте ничего, если хотите разрешить весь контроллер. например $ This-> Auth-> позволяют();

+0

К сожалению, это не ответ на мой вопрос, потому что я использую HTTP-аутентификацию через файл .htaccess, а не непосредственно в библиотеке Auth. Во всяком случае, спасибо за ответ. –

+0

Хорошо. Я понял. Я попробую решение. Спасибо. – BCoder