3

ログインしていないユーザーをリダイレクトしたいとします。現在、私はこれを持っています:

def my_account():
    if "user" not in session or not session["user"]:
        return redirect('/')

    ...

def my_favourites():
    if "user" not in session or not session["user"]:
        return redirect('/')

    ...

しかし、ユーザーがログインしているかどうかをチェックするコードを再利用したいと思います。しかし、これにはsessionオブジェクトが必要です。

requestまたはsessionオブジェクトをヘルパー関数で明示的に渡すことができるかどうか、または渡す必要があるかどうかはわかりません。または、さらに別のより好ましい方法がある場合は?

4

2 に答える 2

1

ユーザーがログインしているかどうかを確認するために再利用可能なコードを書きたい場合、推奨される方法の 1 つはビュー関数でデコレータを使用することです。例えば、

@login_required
def do_something():
*    pass

次に、このデコレータを以下で定義できます。requestその後、 andsessionオブジェクトを使用できます。また、ユーザーがまだログインしていない場合はログイン URL にリダイレクトされ、ログインすると次のページに転送されます。

def login_required(f):
*    @wraps(f)
*    def decorated_function(*args, **kwargs):
*        if "user" not in session or not session["user"]:
*            return redirect(url_for('login', next=request.url))
*        return f(*args, **kwargs)
*    return decorated_function
于 2012-11-09T19:57:57.100 に答える
1

http://packages.python.org/Flask-Login/を試しましたか? これは、あなたが探しているものをより簡単に提供するパッケージだと思います.

于 2012-11-09T19:04:44.780 に答える