博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask中的session
阅读量:7067 次
发布时间:2019-06-28

本文共 1526 字,大约阅读时间需要 5 分钟。

hot3.png

session相当于用密钥签名加密的cookie,即用户可以查看你的cookie,但是如果没有密钥就无法修改它。

使用会话之前你必须设置一个密钥:

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

app=Flask(__name__)

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

          <form action="" method='post'>

               <p><input type=text name=username>

               <p><input type=sumbit value=Login>

          </form>

          '''

@app.route('/logout')

def logout():

    #如果会话中有用户名就删除它

    session.pop('username',None)

    return redirect(url_for('index'))

#设置密钥,复杂一点

app.secret_key='A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'

这里用到的 escape() 是用来转义的。如果不使用模板引擎就可以像上例 一样使用这个函数来转义。

session的属性:

new:如果session是新的,那么就是True,否则是Flase

modified:如果session捕获到其已被修改,那么为True。但是在一些易变对象中,session的修改不被自动捕获,那么就需要自己显式地把它设置为True:

# this change is not picked up because a mutable object (here# a list) is changed.session['objects'].append(42)# so mark it as modified yourselfsession.modified = True

permanent:

如果设置为True的话,session的生命为 permanent_session_lifetime 秒(默认是31天)。如果设置为Flase的话,那么当用户关闭浏览器时,session便被删除了。

如何生成一个好的密钥:

可以使用随机生成器来生成一个好的随机种子:

>>>import os

>>>os.urandom(24)

'\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'

基于 cookie 的会话的说明: Flask 会把会话对象中的值储存在 cookie 中。在打开 cookie 的情况下,如果你访问会话对象中没有的值,那么会得到模糊的错误信息:请检查 页面 cookie 的大小是否与网络浏览器所支持的大小一致。

转载于:https://my.oschina.net/935572630/blog/369962

你可能感兴趣的文章
百兆、千兆网线的做法
查看>>
cisco 10条IOS管理命令
查看>>
文娱产业兴起 娱乐有了 文化在哪?
查看>>
Inotifywait解决监控子目录树的情况
查看>>
两棵树是否相同
查看>>
基本正则表达式和扩展正则表达式中的括号问题
查看>>
saltstack与docker结合构建高可用和自动发现服务
查看>>
SCCM2012R2部署之四:中心站点的部署
查看>>
【答疑解惑】Java类的加载顺序
查看>>
严重 catalina.stop java.net.connectexception connection refused connect
查看>>
ETH-TRUNK
查看>>
Tomcat应用与部署(二)
查看>>
javascript函数的声明、调用、传参和返回值
查看>>
关于布局中float的常见问题及解决办法
查看>>
android 地铁最短路线换乘查询系统(1)
查看>>
DevOps转型成功之路2 - 转型的五个误区
查看>>
JVM-监控命令(5)
查看>>
光纤连接器分类
查看>>
JAVA设计模式之组合模式
查看>>
RH135-1-auto-install
查看>>