flask中session用法,flask-session

  flask中session用法,flask-session

  Cookie:在网站中,http请求是无状态的。也就是说,即使第一次连接服务器并成功登录后,第二次请求服务器仍然无法知道当前请求是哪个用户。Cookies的出现解决了这个问题。第一次登录后,服务器返回一些数据(cookies)给浏览器,然后浏览器在本地存储。当用户发送第二次请求时,上次请求中存储的cookie数据会自动携带到服务器,服务器可以通过浏览器携带的数据判断当前是哪个用户。cookie存储的数据量是有限的,不同的浏览器有不同的存储大小,但一般不会超过4kb。因此,使用cookie只能存储少量数据。

  Session:session和cookie功能类似,都是用来存储用户相关信息的。不同之处在于,cookie存储在本地浏览器中,而会话存储在服务器中。存储在服务器上的数据会更加安全,不容易被窃取。但是存储在服务器中也有一些缺点,就是会占用服务器的资源。但是现在服务器发展到现在,存储一些会话信息已经绰绰有余了。

  cookie和session的结合:cookie和session的使用已经有了一些非常成熟的方案。一般来说,有两种存储方法:

  (1)存储在服务器中:通过cookie存储一个session_id,然后具体数据会保存在会话中。如果用户已经登录,服务器将在cookie中保存一个session_id,session_id将在下一个请求中携带。根据session_id,服务器将在session数据库中获取用户的会话数据。您可以知道用户的真实身份以及一些之前保存的状态信息。这个技术术语叫做服务器端会话。

  (2)加密会话数据,然后将其存储在cookie中。这个技术术语叫做客户端会话。Flask使用这种方法,但也可以用其他方法代替。

  2.设置cookie

  设置cookie:应该在响应的对象上设置。flask上有一个set_cookie方法。响应对象,可用于设置cookie信息。

  fromflaskimportFlask,请求,响应

  app=Flask(__name__)

  @app.route(/)

  defhello_world():

  Resp=Response(“服务器返回的信息”)

  #设置cookie,

  resp.set_cookie(用户名,德里克)

  returnresp

  if__name__==__main__:

  app.run()参数介绍:源代码

  defset_cookie(self,key,value= ,max_age=None,expires=None,

  path=/,domain=None,secure=False,httponly=False,

  Samesite=none) :密钥3360密钥

  值:值

  Max_age:设置过期时间(秒)

  Expires:设置到期时间,时间戳的形式(从1970年到现在的时间)

  Path:当前主域名

  域名:子域

  相关:《Python视频教程》

  3.删除cookie

  删除cookie,可以通过Response.delete_cookie方法指定cookie的键来删除cookie。

  false">@app.route('/del/')

  defdelete_cookie():

  resp=Response("删除cookie")

  #设删除cookie,

  resp.delete_cookie('username')

  returnresp4.设置cookie过期时间

  参数解释:

  (1)max_age:以秒为单位,距离现在多少秒后cookie会过期。

  (2)expires:datetime类型,这个时间需要设置为格林尼治时间,也就是要距离北京少8个小时。

  (3)如果max_age和expires都设置了,那么这时候以max-age为标准。

  (4)如果没有指定过期时间,则默认为浏览器关闭后过期。

  代码如下:

  

@app.route('/')

5. session

 

  flask操作session

  设置session:通过flask.session就可操作session了,操作session就跟操作字典是一样的。session['username'] = 'derek'

  获取session:也是类似字典,session.get('key')

  删除session:session.pop(key),删除指定的值;session.clear(),删除session中所有的值

  设置session有效期:如果没有设置session的有效期。那么默认就是浏览器关闭后过期。如果设置session.parmanent=True,那么就会默认31天后过期。如果不想在31天后过期,那么可以设置app.config['PERMANENT_SESSION_LIFETIME']= timedelta(hour=2),可以指定多久后过期(比如:2小时)。

  代码如下:

  

fromflaskimportFlask,session

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: