2

アプリケーションでページにアクセスするたびにユーザーを認証しようとしています。

Web アプリのセッション処理クラスを作成しました。次のように呼び出されます。

s = Session(request.cookies.get('session_id'))

s.isValid()
>> True #The user is logged in

s.user_id
>> 21 #The ID of the user currently logged in.

u = User(s.user_id)

このロジックを、Web ページにアクセスするたびに呼び出されるグローバル ファイルに含めたいと考えています。このようにして、ビュー ハンドラー内から、ユーザーがログインしているかどうかを確認し、基本的なユーザー情報にアクセスできます。

例として、次のようなことをしたいと思います。

@app.route('/profile')
def profile():

  if logged:
    render_template('edit-profile.html', 
                     first_name=u.first_name)
  else:
    render_template('profile.html')

これは可能ですか?コードはどこに行きますか (どのファイルですか?) どのように見えますか?

4

2 に答える 2

3

あなたはこのようなことをするべきです...

@app.before_request
def before_request():
    try:
        g.user = User.query.filter_by(username=session['username']).first()
    except Exception:
        g.user = None

ログイン ページは、セッションのユーザー名フィールドを設定します。次に、ページのロードごとにこのコードが実行されます。すべてのビューとテンプレートで g.user にアクセスできます。

http://flask.pocoo.org/docs/api/#flask.Flask.before_request

于 2012-09-05T00:45:09.990 に答える
1

また、 Flask-Loginで確認することもできます。多分あなたはそこで何か面白いものを見つけるでしょう。

于 2012-09-05T06:16:59.823 に答える