flask之session
'''
session使用:
session创建:
(1)导入session from flask import session
(2)设置secret_key密钥 app.secret_key='sggdkhfjh3jgj4g4'
(3)使用session: session[key]=value
①创建session字典;
②通过secret_key + 时间戳 + 签名进行加密生成随机字符串;
③将随机字符串写入到cookie中并返回给浏览器 session登录验证:
(1)客户端请求携带cookie中的存储的seesiond的加密字符串;
(2)flask服务端收到session随机字符串通过secret_key进行解密得到session字典 session验证方式:
(1)直接在每个view_func函数进行判断session字典的值
(2)使用装饰器对vuew_func视图函数进行装饰,解决报错方式如下(二选一即可):
①注意在路由中加上参数endpoint='唯一字符串'(指定在view_funcs视图函数字典中的key),否则报错inner已经存在
②在装饰器函数的inner函数上加上装饰器@funuctools.wraps(impoert functools)
(3)还可以通过在@app.before_request装饰的函数中进行校验(类似于django中间件功能,后续讲解) '''
from flask import Flask, render_template, request, session, redirect app=Flask(__name__)
app.secret_key='sdertyuhgfd23456q' #seesion秘钥自定义 #自定义设置cookie中存储的键
# app.config['SESSION_COOKIE_NAME']='NOT session'
#自定义设置cookie有效期,本设置单位是秒
# app.config['PERMANENT_SESSION_LIFETIME']=1000 @app.route('/login',methods=['GET','post'])#请求方式配置大小写均可
def login():
print(request.method)
if request.method=='GET':
return render_template('login.html')
elif request.method=='POST':
username=request.form.get('username')
pwd=request.form.get('pwd')
if username=='yang' and pwd=='':
session['username']=username
return redirect('/') else:
return 'login failed!' #(1)进入视图函数中进行session验证
@app.route('/')
def index():
if session.get('username'):
return render_template('index.html')
else:
return redirect('/login') #(2)装饰器进行session判断之functools.wraps装饰器
def auth(func):
@functools.wraps(func)
def inner(*args, **kwargs):
if session.get('username'):
return func()
else:
return redirect('/login')
return inner @app.route('/index1')
@auth
def index1():
return render_template('index.html') @app.route('/index2')
@auth
def index2():
return render_template('index.html') #(3)装饰器进行session判断之endpoint参数设置
def auth2(func):
def inner(*args, **kwargs):
if session.get('username'):
return func()
else:
return redirect('/login')
return inner @app.route('/index3',endpoint='index3')
@auth2
def index3():
return render_template('index.html') @app.route('/index4',endpoint='index4')
@auth2
def index4():
return render_template('index.html') if __name__ == '__main__':
app.run(host='0.0.0.0',port=9000,debug=True
flask之session的更多相关文章
- Flask的session——关于写扩展所学习到的
这两天端午节.趁着端午节没事干,写了个flask的扩展--flask-RedisSession 在flask中使用该扩展可以让你借助redis数据库轻松获得server-side session. 这 ...
- Flask的session使用
由于http是无状态保存的协议,session可以看作不同请求之间保存数据的一种机制.flask的session是基于cookie的会话保持. 流程 当客户端进行第一次请求的时候,客户端的HTTP r ...
- FLASK 的Session和MoudelForm插件
falsk是小而精的框架,但是热度高, 所有很多爱好者提供了很多扩展插件 功能强大,美而不足的就是兼容稳定性有时候不太好,不过大部分还是很可以的 Flask-Session flask内置sessio ...
- 第六篇 flask中session
Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 Flask 中 session 的使用 1. Flask 中 session 是 ...
- Flask里面session的基本操作
#session是依赖于flask的session模块 #如果想使用session模块,在配置里必须定义sessionkey from flask import Flask,session #建立对象 ...
- flask 的session
python的flask操作设置.获得与删除session 首先讲一下Python的flask中session与cookies的关系,session是储存在服务器中的,cookies是储存在浏览器本地 ...
- Flask之session相关
Flask的session简介 除请求对象之外,还有一个 session 对象.它允许你在不同请求间存储特定用户的信息.它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名要使 ...
- flask自定义session
根据内置session原理可以进行session的定制: #!/usr/bin/env python # -*- coding:utf-8 -*- import uuid import json fr ...
- Flask 进阶session和上下文管理解析
session的源码流程 将session放置在redis中 安装 pip install flask-session 使用 import redis from flask import Flask, ...
- Flask的session
### session:1. session的基本概念:session和cookie的作用有点类似,都是为了存储用户相关的信息.不同的是,cookie是存储在本地浏览器,session是一个思路.一个 ...
随机推荐
- json格式的相互转化
直接上代码: header("Content-type: text/html; charset=utf-8"); $arr = array(); $arr = [ ', ', ' ...
- thinkphp5.1+layui2.x 时间戳转换为日期格式
layui.use(['table','util'],function(){ var table = layui.table,form = layui.form; table.render({ ele ...
- (第二篇)shell的简单了解
Shell (类似开发工具) Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程 ...
- RedHat Linux server 6.5系统关机重启失败问题总结
今天晚上升级服务,由于服务器(red hat Linux server 6.5操作系统)没有正常关机,再重启的过程中遇到了如下问题: 1 服务器配置挺高的,认为启动过程有点慢是正常的,当时就没有上心, ...
- Ubuntu搭建NTP服务器
NTP简介 NTP是Network Time Protocol的缩写,又称为网络时间协议.是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提 ...
- Docker安装和基本操作
一.Docker安装 CentOS7安装Docker CE $sudo yum install -y yum-utils device-mapper-persistent-data lvm2 $sud ...
- 2019.06.18训练日记(赞FLS)
之前打了几场比赛,有很多题没做出来,这些题无论是知识点不会,还是说在当时时间和思路的影响下没有做出来,这都应该做出来,至少现在必须做出来,本来打算专心复习,分数高了,好保研,但是想了想如果局限于只把学 ...
- airtest+poco多脚本、多设备批处理运行测试用例自动生成测试报告
一:主要内容 框架功能及测试报告效果 airtest安装.环境搭建 框架搭建.框架运行说明 airtest自动化脚本编写注意事项 二:框架功能及测试报告效果 1. 框架功能: 该框架笔者用来作为公司的 ...
- python http server handle json
用Python实现一个http server # python2 # coding = utf-8 from BaseHTTPServer import HTTPServer, BaseHTTPReq ...
- CSS中的间距设置与盒子模型
CSS间距 内补白 外补白 盒子模型 CSS间距 很多时候我们为了美观,需要对内容进行留白设置,这时候就需要设置间距了. 内补白 设置元素的内间距 padding: 检索或设置对象四边的内部边距 pa ...