zoukankan      html  css  js  c++  java
  • 【Flask】Flask Session操作

    ### session:
    1. session的基本概念:session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,session是一个思路、一个概念、一个服务器存储授权信息的解决方案,不同的服务器,不同的框架,不同的语言有不同的实现。虽然实现不一样,但是他们的目的都是服务器为了方便存储数据的。session的出现,是为了解决cookie存储数据不安全的问题的。
    2. session与cookie的结合使用:
    * session存储在服务器端:服务器端可以采用mysql、redis、memcached等来存储session信息。原理是,客户端发送验证信息过来(比如用户名和密码),服务器验证成功后,把用户的相关信息存储到session中,然后随机生成一个唯一的session_id,再把这个session_id存储cookie中返回给浏览器。浏览器以后再请求我们服务器的时候,就会把这个session_id自动的发送给服务器,服务器再从cookie中提取session_id,然后从服务器的session容器中找到这个用户的相关信息。这样就可以达到安全识别用户的需求了。
    * session存储到客户端:原理是,客户端发送验证信息过来(比如用户名和密码)。服务器把相关的验证信息进行一个非常严格和安全的加密方式进行加密,然后再把这个加密后的信息存储到cookie,返回给浏览器。以后浏览器再请求服务器的时候,就会自动的把cookie发送给服务器,服务器拿到cookie后,就从cookie找到加密的那个session信息,然后也可以实现安全识别用户的需求了。

    ### flask操作session:
    1. 设置session:通过`flask.session`就可以操作session了。操作`session`就跟操作字典是一样的。`session['username']='zhiliao'`。
    2. 获取session:也是类似字典,`session.get(key)`。
    3. 删除session中的值:也是类似字典。可以有三种方式删除session中的值。
    * `session.pop(key)`。
    * `del session[key]`。
    * `session.clear()`:删除session中所有的值。
    4. 设置session的有效期:如果没有设置session的有效期。那么默认就是浏览器关闭后过期。如果设置session.permanent=True,那么就会默认在31天后过期。如果不想在31天后过期,那么可以设置`app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hour=2)`在两个小时后过期。

     1 # coding:utf-8
     2 from flask import Flask, session
     3 from datetime import timedelta
     4 import os
     5 
     6 app = Flask(__name__)
     7 app.config['SECRET_KEY'] = os.urandom(24)
     8 app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hours=5)
     9 
    10 
    11 @app.route('/')
    12 def hello_world():
    13     session['username'] = 'saber'
    14     # session permanent 持久化置为True则session课保存31天.
    15     session.permanent = True
    16     return 'Hello World!'
    17 
    18 
    19 @app.route('/get_session/')
    20 def get_session():
    21     username = session.get('username')
    22     return username or u'no session set'
    23 
    24 
    25 @app.route('/delete_session/')
    26 def delete_session():
    27     # clear session 'username'
    28     session.pop('username')
    29     # clear all session.
    30     session.clear()
    31     return 'delete success.'
    32 
    33 
    34 
    35 if __name__ == '__main__':
    36     app.run(debug=True)
  • 相关阅读:
    ASP.NET把客户机IP转换成真实地址(利用纯真 IP 数据库)
    关于分层走班教学的思考
    asp.net jQuery Ajax用户登录功能的实现
    C#判断网络地址 Url 是否存在的方法
    Asp.net获得远程网页源代码
    jQuery Ajax 调用aspx后台方法返回DataTable 的例子
    ASP.NET2.0中将GridView导出为Excel
    利用DataGrid显示某目录下的所有文件
    C#使用存储过程详细
    javascript获取当前日期时间
  • 原文地址:https://www.cnblogs.com/chen0427/p/8886789.html
Copyright © 2011-2022 走看看