32

この質問のように: Django の login_required をデフォルトにする最良の方法

Flask-Login現在、のlogin_requiredデコレータを使用しています。でデフォルトの動作にする方法はありますFlaskか?

4

4 に答える 4

41

私は楽器プロジェクトでこれを行いました。私はbefore_requestデコレータを使用します:

@app.before_request
def check_valid_login():
    login_valid = 'user' in session # or whatever you use to check valid login

    if (request.endpoint and 
        'static' not in request.endpoint and 
        not login_valid and 
        not getattr(app.view_functions[request.endpoint], 'is_public', False) ) :
        return render_template('login.html', next=request.endpoint)

is_public()次に、ログインせずにアクセスできるようにする必要があるいくつかの場所のデコレーターを作成しました。

def public_endpoint(function):
    function.is_public = True
    return function
于 2012-11-19T09:48:43.983 に答える
16

ブループリントを使用していて、ブループリント全体をログインで保護する必要がある場合は、全体before_requestをログインを要求するように設定できます。

これは、私が CMS ブループリントに使用するものです。

@cms.before_request
@login_required
def before_request():
    if g.user.role != ROLE_ADMIN:
        abort(401)

ユーザーがログインしているかどうかのみを確認する必要がある場合 (ユーザーが特権を持っているかどうかは確認しない場合) は、単純passに関数を実行できます。

于 2014-09-12T08:43:15.830 に答える