2

每次在我的应用程序中访问页面时,我都希望对用户进行身份验证。

我为我的网络应用程序编写了一个会话处理类。它是这样称呼的:

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)

我想将此逻辑包含在每次访问网页时都会调用的全局文件中。这样,在我的视图处理程序中,我可以检查用户是否已登录并访问基本用户信息。

例如,我想做这样的事情:

@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 回答