• Flask 实现登陆 + session


    Flask 实现登陆 + session

    案例一:

    # -*- coding: utf-8 -*-
    # @Time    : 2019/9/24 16:26
    # @Author  : AnWen
    from flask import Flask, render_template, request, redirect, session
    
    app = Flask(__name__)
    app.secret_key = '!@#$%^&*()11'
    app.debug = True
    
    
    @app.route('/login', methods=['GET', 'POST'])
    def login():
    	if request.method == 'GET':
    		return render_template('login.html')
    	if request.method == 'POST':
    		if request.form.get('username') == 'anwen':
    			session['user'] = request.form.get('username')
    			return redirect('/')
    # 交由客户端保管机制
    # 开启session['ursernsm'] = request.form.get('username')
    # {"username":anwen}
    # 序列化字典 == 字符串
    # 加密字符串 Secret key 密钥字符串
    #
    # 接受反序列化Session;从cookie中获取到一个session key的值
    # 通过Secretkey 解密session
    # 反序列化成字典
    
    @app.route('/')
    def index():
    	print(session.get('user'))
    	return render_template('index.html')
    
    
    if __name__ == '__main__':
    	app.run()
    
    

    案例二:

    # 1 、要求:
    # 	1.登录页面
    # 	2.学生概况页面 ID name 点击详情
    # 	3.学生详情页面 ID name age gender
    
    # 2.使用session验证登录状态
    # 思考:如何记录登录次数
    
    # 3.基于Session编写登录验证装饰器
    # 思考:如何给两个以上的视图函数增加装饰器
    from flask import Flask, request, redirect, render_template, session
    from functools import wraps
    
    USER = {'username': 'anwen', 'password': "123"}
    STUDENT_DICT = {
    	1: {'name': 'Old', 'age': 38, 'gender': '中'},
    	2: {'name': 'Boy', 'age': 73, 'gender': '男'},
    	3: {'name': 'EDU', 'age': 84, 'gender': '女'},
    }
    app = Flask(__name__)
    app.secret_key = "!@#$%^&*()"
    app.debug = True
    
    # 装饰器装饰多个视图函数
    def wrapper(func):
    	@wraps(func)  # 保存原来函数的所有属性,包括文件名
    	def inner(*args, **kwargs):
    		# 校验session
    		if session.get("user"):
    			ret = func(*args, **kwargs)  # func = home
    			return ret
    		else:
    			return redirect("/login")
    	return inner
    
    
    # 首页
    @app.route('/')
    @wrapper
    def index():
    	# if session.get('user'):
    	return render_template('index.html')
    	# else:
    	# 	return redirect("/login")
    
    
    # 登录
    @app.route('/login', methods=["GET", "POST"])
    def login():
    	if request.method == 'GET':
    		return render_template('login.html')
    	if request.method == 'POST':
    		if request.form.get("username") == USER["username"] and request.form.get("password") == USER["password"]:
    			session["user"] = request.form.get("username")
    			return redirect("/")
    		else:
    			return redirect("/login")
    
    
    # 学生概况页面
    @app.route('/desc')
    @wrapper
    def desc():
    	# if session.get("user"):
    	return render_template('desc.html', stu_dic=STUDENT_DICT)
    	# else:
    	# 	return redirect("/login")
    
    
    # 学生详情页面
    @app.route('/info')
    @wrapper
    def info():
    	# if session.get("user"):
    	return render_template('info.html', stu_dic=STUDENT_DICT)
    	# else:
    	# 	return redirect("/login")
    
    
    if __name__ == '__main__':
    	app.run()
    
  • 相关阅读:
    20155313 杨瀚 《网络对抗技术》实验九 Web安全基础
    20155313 杨瀚 《网络对抗技术》实验八 Web基础
    20155313 杨瀚 《网络对抗技术》实验七 网络欺诈防范
    20155313 杨瀚 《网络对抗技术》实验六 信息搜集与漏洞扫描
    20155313 杨瀚 《网络对抗技术》实验五 MSF基础应用
    20155313 杨瀚 《网络对抗技术》实验四 恶意代码分析
    20155313 杨瀚 《网络对抗技术》实验三 免杀原理与实践
    20155313 杨瀚 《网络对抗技术》实验二 后门原理与实践
    20155313 杨瀚 《网络对抗技术》实验一 PC平台逆向破解(5)M
    20155313 2017-2018-1 《信息安全系统设计基础》课程总结
  • 原文地址:https://www.cnblogs.com/an-wen/p/11582222.html
Copyright © 2020-2023  润新知