Flask

flask中利用session实现用户记住密码

不羁的心 提交于 2021-01-15 13:30:34
“记住密码”的实质,实际上就是把cookie的有效期设置的长一点,当用户没有选择记住密码时,cookie的有效期为会话结束,选择记住密码后,会根据服务器的设置延长cookie的有效期,默认是31天。在flask框架中,服务器不会保存用户的会话,而是把会话加秘后放在cookie里面返回给用户。所以,可以通过在session中放置一个标识用户的字段,实现服务器记住用户的功能。 0x01:前端登陆页面 这是一个简单的前台登陆页面,在账号密码的下面用户可选择是否记住密码,实质上,它就是一个input标签,类型是check的复选框类型,它有被开发人员设置了一个默认值,如果用户没有勾选‘记住登录名’,则这个input标签里面就没有值,为None,如果用户勾选的‘记住登录名’,则这个input标签里面的值就为设置的默认值 0x02:后台HTML代码 1 < div id ="remember" > 2 < span style ="margin-left: 10px; color: green" >< input type ="checkbox" name ="remember" value ="1" > 记住登录名 </ span > 3 < a href ="{{ url_for('forget') }}" style ="float: right;margin-top:1px" >

关于Flask-Login中session失效时间的处理

ⅰ亾dé卋堺 提交于 2021-01-13 08:47:51
最近需要使用Python开发web系统,主要用到的框架就是Flask,前端使用Jinja2模板引擎和Bootstrap,web容器使用Cherrypy,其中关于Login管理的使用了Flask-Login插件。 基本上也是从零学起,前前后后花了有好几个月的时间,还是在借鉴了已有的一些项目基础上。在开发的过程中有很多的想法和体会,记录下来,有不对的地方欢迎大家指正。 在处理登录管理的部分,在 Flask-Login 中,如果你不特殊处理的话,session 是在你关闭浏览器之后失效的,而如果不关闭浏览器的话,失效的时间据说是1年,还是1个月,这个地方没看到官方说法,总之是很长,在某些业务场景下这样的处理方式是不能接受的。由于系统的使用者提出了新的需求类似平时的SSO处理机制,大概无任何操作一二十分钟就提示需要再次登录,这样的要求是合理的,之前也没有太注意这个方面的时间,所以就需要回过头来研究Flask-Login的session失效时间和设置问题。以前的登录部分代码: 1 @app.route( ' /login ' , methods=[ ' GET ' , ' POST ' ]) 2 def login(): 3 if request.method == ' GET ' : 4 return render_template( ' login.html ' ) 5 6

20种小技巧,玩转Google Colab

生来就可爱ヽ(ⅴ<●) 提交于 2021-01-13 05:54:42
本文转载自机器之心。 选自amitness.com 作者:Amit Chaudhary 机器之心编译 编辑:陈萍 Google Colab 给广大的 AI 开发者提供了免费的 GPU,你可以在上面轻松地跑 Tensorflow、Pytorch 等深度学习框架。但关于 Colab 的使用技巧你又掌握了多少呢?这篇文章将介绍 20 种 Colab 使用技巧,帮你提高使用效率。 1. 便签本 Notebook 当我们在 colab 上尝试一些临时的东西时,我们会创建一堆杂乱、没有标题的 Notebook。 为了解决这个问题,你可以把以下链接加入书签:https://colab.research.google.com/notebooks/empty.ipynb 这将打开一个特殊的 scratch notebook,并且你对该 notebook 所做的任何更改都不会保存到你的主目录中。 2. 单元计时 通常,我们手动计算一段代码的开始时间和结束时间之间的差值来衡量所花费的时间。Colab 提供了内置功能来执行此操作。在执行了一个单元(cell)之后,将鼠标悬停在单元运行图标上,你将获得代码执行时间的估计值。 3. 运行某个单元的一部分 你也可以运行某个单元的一部分,通过选择单元格并点击 Runtime 索引到 Run Selection 按钮或使用键盘快捷键 Ctrl + Shift +

人生苦短,我用Python

。_饼干妹妹 提交于 2021-01-13 00:37:51
目录 python基本数据类型 文件处理 函数 模块和包 异常处理 常用模块 面向对象 网络编程 并发编程 MySQL数据库 前端 VUE Django框架 权限管理 rest-framework linux基础 Git Redis Flask框架 爬虫 其他 python基本数据类型 【第一篇】 Python基础 之 变量、用户交互、if条件语句、while循环语句、编码、逻辑运算 【第二篇】 Python基础 之 int、bool、str、列表、元组、字典 【第三篇】 Python基础三 【第四篇】 思维导图 函数 【第一篇】 初始函数 【第二篇】 函数装饰器 【第三篇】 迭代器,生成器 【第四篇】 内置函数、匿名函数 【第五篇】 递归函数 【第六篇】 函数思维导图 【第七篇】 内置函数思维导图 常用模块 【第一篇】 正则表达式 【第二篇】 Python中常用模块一 【第三篇】 Python中常用模块二 【第四篇】 python常用uuid模块 【第五篇】 requests模块 【第六篇】 BeautifulSoup模块 【第五篇】 模块思维导图 面向对象 【第一篇】 初识面向对象 【第二篇】 面向对象的三大特性 【第三篇】 面向对象property属性、静态方法和类方法 【第四篇】 面向对象的进阶 【第五篇】 浅谈面向对象的认识 【第五篇】 面向对象思维导图 网络编程

Python

不打扰是莪最后的温柔 提交于 2021-01-12 19:59:18
适用于新生和经验丰富的Python基本面试问答 1)什么是Python?使用Python有什么好处? Python是一种具有对象,模块,线程,异常和自动内存管理的编程语言。python的优点是它简单,易用,可移植,可扩展,内置数据结构,并且是开源的。 2)什么是PEP 8? PEP 8是一个编码约定,是一组建议,有关如何编写更具可读性的Python代码。 3) 什么是Pickle和pickling? Pickle模块接受任何Python对象并将其转换为字符串表示形式,并使用转储功能将其转储到文件中,此过程称为pickling。从存储的字符串表示中检索原始Python对象的过程称为解开。 4)如何解释Python? Python语言是一种解释性语言。Python程序直接从源代码运行。它将程序员编写的源代码转换为中间语言,该中间语言又被翻译为必须执行的机器语言。 5)如何在Python中管理内存? Python内存由Python专用堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆,解释器负责处理此Python私有堆。 为Python对象分配Python堆空间是由Python内存管理器完成的。核心API允许访问一些工具,以便程序员进行编码。 Python还具有一个内置的垃圾收集器,该垃圾收集器回收所有未使用的内存,并释放内存并使之可用于堆空间。 6

详解Nginx 13: Permission denied 解决方案

萝らか妹 提交于 2021-01-12 08:28:20
这篇文章主要介绍了详解Nginx 13: Permission denied 解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 今天在用uwsgi+nginx在部署flask应用时,遇到502的错误,vim /var/log/nginx/error.log查看nginx的错误日志,提示如下错误信息: 2018/07/22 00:46:36 [crit] 15890#15890: *74 connect() to unix:/root/jianshuvue/jianshu.sock failed (13: Permission denied) while connecting to upstream, client: 120.42.13.98, server: jianshu.weiweiblog.cn , request: “GET /favicon.ico HTTP/1.1”, upstream: “uwsgi://unix:/root/jianshuvue/jianshu.sock:”, host: “ jianshu.weiweiblog.cn ”, referrer: “ http://jianshu.weiweiblog.cn/jianshu/67eb7ed414d3 ” Permission denied,一看就知道是权限出了问题

Django 模板语言 标签

我怕爱的太早我们不能终老 提交于 2021-01-12 04:36:48
前言:django的模板语法基本和flask的jinja2基本一样。下面比较一下两个模板语法的区别。 ------ 深度变量的查找(万能的句点号) 在 Django 模板中遍历复杂数据结构的关键是句点字符 ( . )。 1.模板变量 django :{{ 变量 }} # 因为django只有一个context返回,全部数据都集中在一起 jinja2 :{{ 对象.变量 }} 2.根据列表的下标获取值 django :{{ 列表.0 }} jinja2 :{{ 列表[0] }} 3.根据字典的键获取字典的值 django :{{ 字典.key }} jinja2 :{{ 字典[key] }}或者{{ 字典.key }} 4.for循环时取序号 django : {% for item in 列表 %} {{forloop.counter}} < 1-- 表示当前是第几次循环,从 1开始 --> {{forloop.counter0}} <!-- 表示当前是第几次循环,从 0开始 --> {% endfor %} jinja2 : {% for item in 列表 %} {{loop.index}} < 1-- 表示当前是第几次循环,从 1开始 --> {{loop.index0}} <!-- 表示当前是第几次循环,从 0开始 --> {% endfor %} # for遍历字典 {

在线播放mp4

霸气de小男生 提交于 2021-01-11 07:53:29
在线播放mp4 1、准备好支持再网页上播放的mp4格式 AVC(h264) 格式的mp4 2、用ckplayer控制播放 (1)到ckplayer下载js。如: http://www.ckplayer.com/down/ (2)到flask工程中写html静态代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>hello flask</title> </head> <body> <h1>hello flask2</h1> <script type="text/javascript" src="js/ckplayer/ckplayer.js"></script> <div class="videosamplex"> <video id="videoplayer" src="http://127.0.0.1:5000/static/p42.mp4"></video> </div> <script type="text/javascript"> var videoObject = { container: '.videosamplex',//“#”代表容器的ID,“.”或“”代表容器的class variable: 'player',//该属性必需设置,值等于下面的new chplayer(

buuctf admin writeup

和自甴很熟 提交于 2021-01-10 04:34:58
熟悉的登陆注册页面,结合结合题目admin的提示,想到是通过修改admin用户密码或伪造admin身份的方式来以admin账户。 查看源码,看到了一个hint: 下载下来,是靶场的源码 首先尝试抓包分析,抓取了修改密码的请求包,看到了一串session的密文 因为这里使用了flask框架,所以搜索了一下,发现flask的session不存在加密,并且我在GitHub上面找到了flask的session解码及转码的 脚本(脚本小子上线) 而且在源码中,我们很容易的看到了secret_key SECRET_KEY = os.environ.get(‘SECRET_KEY’) or ‘ckj123’ 于是加上key,修改name为admin 拿到了修改后的session,发包修改密码,登录admin账户,拿到flag 最后附上session解码的脚本 import sys import zlib from base64 import b64decode from flask.sessions import session_json_serializer from itsdangerous import base64_decode def decryption(payload): payload, sig = payload.rsplit(b'.', 1) payload,

websocket的应用---Django

孤人 提交于 2021-01-09 17:08:52
1.长轮询 轮询 :在前端通过写js实现。缺点:有延迟、服务器压力大。 就是客户端通过一定的时间间隔以频繁请求的方式向服务器发送请求,来保持客户端和服务器端的数据同步。问题很明显,当客户端以固定频率向服务器端发送请求时,服务器端的数据可能并没有更新,带来很多无谓请求,浪费带宽,效率低下。 长轮询 首先需要为每个用户维护一个队列,用户浏览器会通过js递归向后端自己的队列获取数据,自己队列没有数据,会将请求夯住(去队列中获取数据),夯一段时间之后再返回。 注意:一旦有数据立即获取,获取到数据之后会再发送请求。 用户发来请求之后,最多会夯住N秒(30s),因为有消息的时候回立即返回,没有消息时才最多夯N秒。 2.websocket 2.1 原理 WebSocket 是 HTML5 一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯,它建立在 TCP 之上,同 HTTP 一样通过 TCP 来传输数据,但是它和 HTTP 最大不同是: WebSocket 是一种双向通信协议,在建立连接后,WebSocket 服务器和 Browser/Client Agent 都能主动的向对方发送或接收数据,就像 Socket 一样; WebSocket 需要类似 TCP 的客户端和服务器端通过握手连接,连接成功后才能相互通信。 2.2具体实现: