2010-09-11 63 views
3

我有一個我不想公開的靜態文件。有沒有辦法限制訪問與app.yaml,以便它只能由自己的域加載?使用GAE限制對靜態文件的訪問

基於web2py的解決方案也很受歡迎,因爲我在GAE之上使用它。

謝謝!

回答

5

您可以通過'login:required'限制對它的訪問權限,要求使用Google帳戶登錄或'login:admin'將其限制爲僅限管理員。如果您只關心濫用行爲,則可能需要考慮DOS API

+0

哦,這是否也適用於靜態文件? – 2010-09-19 16:43:16

+3

是的,它的確如此。 /// – 2010-09-19 23:41:20

+0

謝謝尼克。至於通過登錄限制靜態文件:required或login:admin,那麼是否有可能通過urllib.urlopen或類似的東西傳入登錄憑據以便在運行時下載數據? – Dane 2010-09-20 04:40:09

1

我假設你想爲此使用web2py認證。你必須遵循一些簡單的規則。 1)app/static中的文件是公共文件。 2)你想要進行身份驗證的文件進入app/private。然後創建你自己的web2py行動,服務器的私有內容/

@auth.requires() 
def private(): 
    import os 
    file = os.path.join(request.folder, 'private', request.args(0)) 
    return response.stream(open(file,'rb')) 

如果你想使用,你需要在數據庫表和auth.add_permission文件名存儲到組到記錄的基於角色的訪問控制。

如果您向web2py郵件列表提問,您會得到更快的響應和更有效的響應。

+0

我很確定這不適用於App Engine,因爲文件不在真實的文件系統中。 – 2010-09-19 16:44:06

+1

這取決於。我在假設下回答了文件是在開發時提供的。在那種情況下,它將在GAE上工作。如果我們正在討論上傳到應用程序的文件,那麼web2py解決方案很容易。使用Field('file','upload',authorize = lambda row:row.author == auth.user_id)和Field('author',db.auth_user,default = auth.user_id)創建表並使用form = crud .create(db.thetable)將圖像上傳到表格中(受GAE文件大小限制的限制)本書第3章對此進行了廣泛討論,並且所有示例都在GAE中開箱即用。 – mdipierro 2010-09-19 21:02:01

+0

感謝您的回覆Mossimo。我在這裏發佈而不是郵件列表,因爲我希望有一個快速的app.yaml解決方案,但是現在我決定採取一種完全不同的方法來完成我的任務,而不涉及在GAE上使用該文件。我會在未來繼續考慮您的解決方案。 – Dane 2010-09-20 04:37:05