Flask session到期时间设置 用户登录与登出

时间:2019-09-20
本文章向大家介绍Flask session到期时间设置 用户登录与登出,主要包括Flask session到期时间设置 用户登录与登出使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

flask版本 1.1.1

最近学习Flask开发,看官方文档产生疑问,就是session有效期的问题,默认貌似是没有有效期的,只有关闭浏览器session才会失效,其实控制session的有效期非常简单,简单到只需要添加两行代码就可以实现,先看看官方session的示例代码。

官方文档示例代码

官方示例简单明了的演示了session的使用,代码一共为3个页面,首页、登陆和登出

  • 访问首页时,如果用户没有登陆或者session到期时,会提示You are not logged in

  • 访问登陆页时如果是POST请求取出username保存到session中,并跳转到首页。

  • 访问登出页面时,从session中移除username,并跳转到首页。

    from flask import Flask, session, redirect, url_for, escape, request

    app = Flask(name)

    Set the secret key to some random bytes. Keep this really secret!

    app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'

    @app.route('/') def index(): if 'username' in session: return 'Logged in as %s' % escape(session['username']) return 'You are not logged in'

    @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': session['username'] = request.form['username'] return redirect(url_for('index')) return '''

    '''

    @app.route('/logout') def logout(): # remove the username from the session if it's there session.pop('username', None) return redirect(url_for('index'))

    if name == "main": app.run()

把上面的代码保存起来运行,用浏览器访问各个功能,按F12键,查看Request HeadersResponse Headers并观察它们的变化,发现登陆后在Request HeadersCookie中多了session=xxx,这是因为我们在login视图函数中将用户提交的username保存在session

怎么设置session的到期时间呢

设置到期时间

login视图函数中添加以下两行代码

...
...
def login():   
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=1) # 设置session到期时间
    ...
...

设置到期时间后,在到期后会提示需要登录,在session到期前刷新浏览器,会重新计算session的到期时间

在学习之前,有使用flask_restful开发过一个简单的API,是通过Token进行访问限制的,需要什么功能都是直接搜来用的,一直觉得在会话这款应该比较难理解和学习,没想到这么简单,希望对大家有所帮助,如有不对指出,还请指正,谢谢。

每次浏览器关闭后再次打开就需要重新登陆,这似乎并不好,接下来学习如果在本地保存登陆状态。

原文地址:https://www.cnblogs.com/zhaiweiwei/p/11558114.html