2013-10-11 47 views
1

在我的CakePHP應用程序中,我有一個文件目錄,我想允許用戶名/密碼直接訪問這些文件。由於過於複雜的原因,將目錄置於/ webroot文件夾內不是一個選項。我的文件夾所在位置:CakePHP:如何允許通過.htaccess訪問一個目錄的密碼

/app/parent_folder/folder_full_of_files

所以我希望能夠直接訪問文件就像這樣:

http://mysite.com/app/parent_folder/folder_full_of_files/some_file.pdf

我想我需要修改的.htaccess文件根,並且還添加另一個.htaccess文件和.htpasswd文件中的folder_full_of_files

我已經找到this post,它詢問了一個simila問題......但我無法將其翻譯成我的應用程序。

  1. 我該如何修改根.htaccess文件?
  2. 應該在新的.htaccess文件中。下面是我嘗試過,但只是導致500錯誤...

    AuthType Basic 
    AuthName "restricted area" 
    AuthUserFile /bla/bla/mysite/app/parent_folder/folder_full_of_files/.htpasswd 
    require valid-user 
    
  3. 什麼是加密.htaccess文件中的密碼正確的方法是什麼?

+0

如果它們是敏感文件,則可以使用控制器操作來下載這些文件。 – nithin

回答

0
  1. 你並不需要修改htaccess文件在你的文檔根在所有
  2. 確保已AllowOverride AuthConfigAllowOverride All配置爲您的/app/parent_folder/folder_full_of_files/目錄。確保該目錄也有一個正確生成的htpasswd文件(名爲.htpasswd)。您需要使用htpasswd程序來生成它或任何數量的在線生成器。
+0

對於#2,應該在'.../folder_full_of_files /'中出現的htaccess文件的確切內容是什麼?另外,什麼是「正確生成的.htpasswd文件?我嘗試了一些在線加密器,但它們都返回了不同的結果。我嘗試從終端發出'htpasswd -c /bla/bla/.htpasswd用戶名'命令並且什麼也沒有發生。錯誤。沒有文件。沒有。 – emersonthis

+0

@Emerson在你想保護的文件夾的htaccess文件中,你有什麼需要的。當你運行htpasswd命令時,'htpasswd'命令會提示輸入密碼。 –

+0

我正在使用Chrome的「REST控制檯」擴展來發送帶有基本身份驗證的請求,並將其設置爲匹配的用戶名和純文本密碼。如果(如果設置了正確)工作? – emersonthis

1

我得到了這個工作。我必須做的幾件事情...

  1. 我的根已將此添加到.htaccess文件:

    RewriteCond %{REQUEST_URI} !^/app/parent_folder/folder_full_of_files 
    

    正如@喬恩指出,我原來的版本上面有一個錯誤([L]) 。

  2. 我的/app目錄中還有一個.htaccess文件。這可能是一個關於我的安裝的怪癖,因爲它不是100%的標準。我不記得它是否在默認情況下,所以我提到它以防萬一。如果您沒有/app中的跳過此步驟。

  3. 我在/folder_full_of_files添加到了一個.htaccess文件:

    AuthType Basic 
    AuthName "restricted area" 
    AuthUserFile /bla/bla/mysite/.htpasswd 
    require valid-user 
    

    確保路徑後AuthUserFile是對.htpasswd文件的完全合格的路徑(見下一步)。

  4. 創建實際的.htpasswd文件。它不應該在文檔根目錄下,但我的是。我認爲最重要的是它不在/webroot之內。我從終端使用此命令並創建了以下文件:

    htpasswd -c /path/where/it/should/go/.htpasswd whatever_username 
    

    它要求獲取加密並寫入文件的明文密碼。

就是這樣。一個煩人的「難題」是認證文件的.htaccess中的路徑必須是絕對路徑,這意味着在本地測試和生產之間移動時(除非兩個環境完全相同),它可能必須進行編輯。如果允許相對路徑,那麼它會不那麼笨重。