【flask_restful】@login_requiredをクラスで使用する

【flask_restful】@login_requiredをクラスで使用する Python

Pythonのフレームワークであるflaskを利用していると、flask_restfulでREST APIを実装し、flask_loginでアクセス制御するという使い方があると思います。

例えばログインしている場合のみアクセスできるメソッドの場合、頭に@login_requiredを記載します。以下のようになります。

from flask_restful import Resource
from flask_login import login_required

class TestApi(Resource):

    @login_required
    def get(self, id):
        ...
    @login_required
    def post(self, id):
        ...
    @login_required
    def put(self, id):
        ...
    @login_required
    def delete(self, id):
        ...

メソッド1つ1つに@login_requiredを記述するのは冗長なので、クラスに付与できないかflask_restfulのリファレンスを調べました。

API Docs — Flask-RESTful 0.3.8 documentation

decoratorsというパラメータがありましたので、これを使います。使用例は以下です。

from flask_restful import Resource
from flask_login import login_required

class TestApi(Resource):
    decorators = [login_required]

    def get(self, id):
        ...
    def post(self, id):
        ...
    def put(self, id):
        ...
    def delete(self, id):
        ...

スッキリしましたね。

ちなみにflask_praetorianもflask_loginと同じように使えます。

from flask_restful import Resource
from flask_praetorian import auth_required

class TestApi(Resource):
    decorators = [auth_required]
タイトルとURLをコピーしました