2014-12-02 60 views
0

我有一個應用程序在CakePHP 2通過.htaccess文件具有HTTP保護。在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 

我有UsersControllerconfirmation()方法。重點是一個是物理路徑,另一個是「虛擬」。

解決此問題的任何想法?

回答

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 }

操作可即使沒有認證訪問。如果要允許整個控制器,則不發送任何內容例如$這 - > Auth->允許();

+0

不幸的是這並沒有回答我的問題,因爲我通過'.htaccess'文件使用HTTP身份驗證,而不是直接在Auth庫上使用。無論如何,謝謝你的回覆。 – 2014-12-02 16:42:05

+0

好的。我明白了。我會嘗試解決。謝謝。 – BCoder 2014-12-03 04:51:24