Flaskのログインデコレータ

By | 2012/2/27 月曜日

最近Pythonのデコレータが理解できて、ログイン後のページ表示に使えるんじゃないかと思いついた。
Flaskを利用しているので、そこらへんを中心にググってみたらやはりありました。

pocooチームによるLogin Required Decoratorの実装
Login Required Decorator

とりあえず上記を元に実際に組んでみます。

from functools import wraps

from flask import Flask
app = Flask(__name__)


def login_required(f):
    @wraps(f)
    def decorated_function(*args, **kwargs):
        if not is_login():
            return 'dame dayo!'
        return f(*args, **kwargs)
    return decorated_function


def is_login():
    return False


@app.route('/')
def root_page():
    return 'public!!'


@app.route('/mypage')
@login_required
def my_page():
    return 'private!!'


if __name__ == '__main__':
    app.run(host='192.168.56.10')

/にアクセス

public!!

/mypageにアクセス

dame dayo!

これで目的達成。
functools.wrap()なんて初めて使った。
今度はここらへんを調べてみよう。

コメントを残す

メールアドレスが公開されることはありません。