15

以下の回答のおかげで、ユーザーがまだログインしていない場合にbefore_requestユーザーをリダイレクトする機能があります。/login

リクエスト前のフラスコ - 特定のルートの例外を追加

これが私の before_request のコピーです。

@app.before_request
def before_request():
    if 'logged_in' not in session and request.endpoint != 'login':
        return redirect(url_for('login'))

ただし、ユーザーがログインしていない限り、静的ディレクトリ内のファイルは提供されません。

私の/loginページでは、ディレクトリからcssファイルを取得しています/staticが、これが原因でロードできませんbefore_request

Apache mod_wsgi を使用してこのアプリケーションを展開し、Apache 構成ファイルに/staticディレクトリをサイトの DocumentRoot として含めました。

/staticユーザーがログインせずにアプリケーションのファイルを提供するために例外を追加するにはどうすればよいbefore_requestですか?

4

3 に答える 3

11

Apacheが Flask ではなく静的ファイルを提供するようにするには、 Apache構成ファイル (ファイルにアクセスできない場合は .htaccess ファイル) にAliasorディレクティブを追加する必要があります。Apache Web サーバーが静的パスにアクセスできるようにを指定したことを確認してください。(また、ファイルを編集している場合は、変更が反映されるように Apache を再起動することを忘れないでください)。AliasMatch.confDirectory.conf

/static/一時的な応急措置として (または開発での作業を容易にするため)、文字列が に含まれていないことを確認することもできますrequest.path

if 'logged_in' not in session \
    and request.endpoint != 'login' \
    and '/static/' not in request.path:
于 2013-02-08T01:40:28.517 に答える
0

私はApacheのアプローチに同意しますが、簡単な修正のために、 before_request() 関数の開始時に次のロジックを使用します。

if flask.request.script_root == "/static":
  return
于 2014-07-25T16:39:04.077 に答える