Flask 验证模式
1.在视图中添加判断
"""
在路由中添加身份验证
"""from flask import Flask,render_template,request,redirect,session
app = Flask(__name__)
app.debug = True@app.route('/login',methods=['GET','POST'],endpoint='l1') # endpoint用于url_for
def login():if request.method == "GET": # 当get方法访问登录页面,返回登录页面return render_template('login.html')else: # 当post方法访问时,则进行判断登录验证user = request.form.get('user') # 获得form中name="user"对应的值pwd = request.form.get('pwd') # 获得form中name="pwd"对应的值if user == 'wang' and pwd == '123': # 判断用户,用户信息可以放在数据库内session['user_info'] = user # 在session中添加登录的用户,在访问其他页面时可以使用return redirect('./index')return render_template('login.html',error='用户名或密码错误') # 如果登录验证错误,则跳回本页面,并提示@app.route('/index',methods=['GET'])
def index():user = session.get('user_info')if not user:return redirect('/login')# return redirect('/login')return render_template('index.html')if __name__ == '__main__':app.run()
也可以使用装饰符
"""
通过装饰符做身份验证
"""import functools
from flask import Flask,render_template,request,redirect,session
app = Flask(__name__)
app.debug = True
app.secret_key = "123"@app.route('/login',methods=['GET','POST'],endpoint='l1') # endpoint用于url_for
def login():if request.method == "GET": # 当get方法访问登录页面,返回登录页面return render_template('login.html')else: # 当post方法访问时,则进行判断登录验证user = request.form.get('user') # 获得form中name="user"对应的值pwd = request.form.get('pwd') # 获得form中name="pwd"对应的值if user == 'wang' and pwd == '123': # 判断用户,用户信息可以放在数据库内session['user_info'] = user # 在session中添加登录的用户,在访问其他页面时可以使用return redirect('./index')return render_template('login.html',error='用户名或密码错误') # 如果登录验证错误,则跳回本页面,并提示def login(func): # 验证用户身份的装饰器@functools.wraps(func) # 作用是保持被装饰函数的函数名,因为url_for是根据函数名来的,如果不保持会报错,或者使用endpoint取别名def inner(*args,**kwargs):user = session.get('user_info')if not user:return redirect("/login")return func(*args,**kwargs)return inner@app.route('/index',methods=['GET'])
@login
def index():return 'index'if __name__ == '__main__':app.run()
2.使用before_request
可以设置白名单黑名单,类似于添加配置文件
"""
通过before_request来做身份验证"""from flask import Flask,render_template,request,redirect,sessionapp = Flask(__name__)
app.debug = True
app.secret_key = 'adsfasdf'@app.before_request
def process_request(*args,**kwargs):if request.path == '/login': # 如果是请求登录页面,则放行,否则会死循环,在这里可以配置白名单return Noneuser = session.get('user_info')if user: # 如果user存在则放行,否则重定向到登录页面return Nonereturn redirect('/login')@app.route('/login',methods=['GET','POST'],endpoint='l1') # endpoint用于url_for
def login():if request.method == "GET": # 当get方法访问登录页面,返回登录页面return render_template('login.html')else: # 当post方法访问时,则进行判断登录验证user = request.form.get('user') # 获得form中name="user"对应的值pwd = request.form.get('pwd') # 获得form中name="pwd"对应的值if user == 'wang' and pwd == '123': # 判断用户,用户信息可以放在数据库内session['user_info'] = user # 在session中添加登录的用户,在访问其他页面时可以使用return redirect('/index')return render_template('login.html',error='用户名或密码错误') # 如果登录验证错误,则跳回本页面,并提示@app.route('/index',methods=['GET'])
def index():return 'index'if __name__ == '__main__':app.run()
Flask 验证模式相关推荐
- WCF NetTcpBinding Transport安全模式(6) ClientCredentialType证书验证模式---- PeerTrust验证模式...
WCF NetTcpBinding Transport安全模式(6) ClientCredentialType证书验证模式---- PeerTrust验证模式 当证书验证模式设置为"Pe ...
- 思科ssh验证方式_SSH的应用:一个实例两种验证模式的实现
一:说明 以下讨论的是密钥的两种认证模式,至于口令的认证不在本文档的考虑范围,相关的口令认证的文档请阅读本博的其他文章. 另外,有关SSH的基础方面的知识也不在本文档的讲解范畴,也请查阅本博的另外的相 ...
- 如何改变SQL SERVER的身份验证模式
2007年07月09日 星期一 上午 10:10 1.点击"开始"-"运行",输入regedit,回车进入注册表编辑器 2.依次展开注册表项,浏览到 ...
- SharePoint 2010 中的BCS身份验证模式
BCS(Business Connectivity Services)是SharePoint 2010中用于替换原先Microsoft Office SharePoint Server 2007企业版 ...
- Oracle Database Administrator验证模式
下图清楚地描述了Oracle Database Administrator的身份验证模式. Oracle的验证模式有2种: (1).Os Authentication:通过登陆操作系统的账号验证身份. ...
- 如何修改SQL Server 2000身份验证模式和系统管理员
大家安装SQL Server 2000时,很多人都习惯性的一路下一步,最后就会以windows身份验证作为登录数据库服务器的方式,假如有一天你后悔了,想以sql server的验证方式登陆,那怎么办呢 ...
- 《南溪的目标检测学习笔记》——验证模式下出现“Process finished with exit code 137 (interrupted by signal 9: SIGKILL)“的问题
1 问题描述 在验证模式下运行代码的时候,出现这样的错误: Process finished with exit code 137 (interrupted by signal 9: SIGKILL) ...
- flask debug模式logging模块报错os.rename(self.baseFilename, dfn) WindowsError: [Error 32]
2019独角兽企业重金招聘Python工程师标准>>> flask debug模式logging模块报错 Traceback (most recent call last): F ...
- Spring源码学习1.4 获取XML的验证模式
Spring5源码分析(008)--IoC篇之加载BeanDefinition:获取XML的验证模式 -- 转载 注:<Spring5源码分析>汇总可参考:Spring5源码分析(002) ...
最新文章
- 访问的属性未定义_V8中的快属性
- 杭电1018 Big Number
- java简单的死锁检测(转载线下代码)
- [Web开发] MySpace 发布开发接口
- 如果在我爸的朋友圈当杠精,会挨揍吗?
- leetcode力扣647. 回文子串
- 凸优化第二章凸集 2.5 分离与支撑超平面
- 数据包接收系列 — IP协议处理流程(二)
- J2EE开发系列视频教程
- HTMLTestRunnerNew 测试报告详解
- WeNet语音识别实战
- DHCP/Netbios
- (转载)洪磊并不是反叛英雄
- matlab 光斑质心算法,高精度光斑中心定位算法
- 7月书讯(下)| 宝藏新书助你“乘风破浪”
- 乌班图linux怎么连手机热点,ubuntu 16.04 设置位wifi热点 方法(手机可链接)亲测可用...
- 让人心动的jQuery插件和HTML5动画
- 综合练习Java算法
- ubuntu 16.04 chrome flash player 插件更新(adobe flash player 不是最新版本)
- 八人抢答器讲解_8人抢答器的制作原理和过程说明是怎样的?
热门文章
- Java继承知识之基本控制语句(if、switch与穿透现象)
- C++动态空间申请、动态对象(new与delete运算)
- (篇四)C语言静态变量法,求各阶乘,的和
- Python+django建站入门篇(2):素数判断
- 关于流(文件)的输入,输出与调用(fprintf,fscanf)
- Linux关闭java命令,Linux系统关闭或重新启动主机的命令详解
- idea mybaits逆向工程_IDEA 中集成 MyBatis Generator 组件逆向生成工程
- python 惰性序列_菜鸟学飞自学Python(五)高阶函数
- C++之指针探究(六):二级指针和指针数组
- android p preview_细数 Android P 开发者预览版中最不能错过的新特性