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 Headers
和Response Headers
并观察它们的变化,发现登陆后在Request Headers
的Cookie
中多了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
- WCF 添加 RESTful 支持,适用于 IIS、Winform、cmd 宿主
- 在CentOS 7上安装Nginx服务器
- 卷积神经网络 | 深度学习笔记1
- 【直播】我的基因组65:看看哪些基因的突变较多,哪些较少
- angular之interceptors拦截器
- js list数据 转 树状 层级 JSON,递归生成树状 层级 JSON
- jquery 图片文件转base64 显示
- AngularJS 用 $http.jsonp 跨域SyntaxError问题
- 简单的java socket 示例
- Hadoop二次开发环境构建
- Android EditText 获得输入焦点 以及requestfocus()失效的问题
- 【直播】我的基因组68:看看哪些基因的突变较多,哪些较少
- GDI+编程
- GDI编程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何解决PHP获取不到SESSION信息之一般情况
- PHP实现通过二维数组键值获取一维键名操作示例
- laravel 判断查询数据库返回值的例子
- laravel框架数据库配置及操作数据库示例
- laravel 输出最后执行sql 附:whereIn的使用方法
- laravel框架模型、视图与控制器简单操作示例
- Laravel关系模型指定条件查询方法
- 在laravel中使用with实现动态添加where条件
- laravel Model 执行事务的实现
- 在laravel中实现事务回滚的方法
- thinkphp5框架实现数据库读取的数据转换成json格式示例
- phpfpm的作用和用法
- 浅谈PHP5.6 与 PHP7.0 区别
- laravel执行php artisan migrate报错的解决方法
- Laravel统计一段时间间隔的数据方法