はい、そのnginxルールを使用するとweb2pyをバイパスします。これはweb2pyのマニュアルから直接であるとして、それを削除し、静的web2pyのハンドル/をさせる/、どちらかあまり変わりません。
http://127.0.0.1:8000/a/static/filename を「静的」と呼ばれる何のコントローラはありません。 web2pyは、これをアプリケーション "a"のサブフォルダ "static"の "filename"というファイルの要求として解釈します。 静的ファイルがダウンロードされると、web2pyはセッションを作成せず、クッキーを発行したりモデルを実行したりしません。
コントローラがないため、静的コンテンツにauth.requires_login()を直接使用することはできません。これは、/ static /にあるファイルは一般的にアクセス制御されていないため、ブラウザがウェルカムまたはログインページのレンダリングに必要なcss、jsなどを取得できないためです。
しかし、あなたはまだ(すなわちプライベートpdfファイル)静的ファイルにサイト全体のアクセス制御をしたい場合は、そのようにそれを行うことができます。アプリケーションディレクトリ内
- 、private_static
というフォルダを作成しますお使いのコントローラで
その後、次の行を追加します。
#default.py
import os
auth.requires_login()
def private_static():
filename = os.path.join(*request.args)
allowed = ['private1.pdf', 'private2.pdf'] # have some kind of validation for security!
if not filename in allowed:
raise HTTP(404)
return response.stream(open(os.path.join(request.folder, 'private_static', filename)))
とあなたで次のようなビュー何か:
<a href="{{=URL('private_static', args=['private1.pdf'])}}">Private Document</a>
今すぐ静的なファイルを取得する前にログインするユーザーを強制しますhttp://.../private_static/private1.pdfにアクセスします。