用于在Python的Flask中验证用户会话的全局函数

时间:2012-09-05 00:38:36

标签: python flask

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

我为我的网络应用编写了一个会话处理类。它被称为:

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')

这可能吗?代码在哪里(哪个文件?)它会是什么样的?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您还可以查看Flask-Login。也许你会在那里找到一些有趣的东西。