flask是python web开发的常用框架之一。本文将讲述flask如何实现修改密码和免密登录功能

修改密码功能

数据库部分:

#重置密码
def reset_pass(phone,password):conn,cursor=get_conn()sql="update userdata set userpass='"+password+"' where userphone='"+phone+"'"try:print("正在修改密码...")resetflag=cursor.execute(sql)conn.commit()close_conn(conn,cursor)if(resetflag==1):print("修改成功")return 1else:print("修改失败!")return 0except:print("系统错误...修改密码失败!")return 0

路由部分:

#用户修改密码
@app.route('/resetpass',methods=['GET', 'POST'])
def resetpass():userphone=request.values.get('userphone')resetpass=request.values.get('resetpass')print("路由获得手机号:"+userphone+"\n")print("路由获得新密码:" + resetpass + "\n")flag=sql.reset_pass(userphone,resetpass)if(flag==1):return jsonify({"data":1})else:return jsonify({"data":0})

html页面:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>树懒电影---重置您的密码</title><style type="text/css">#resetform{margin-top: 350px;margin-left: 750px;}</style>
</head>
<body><form method="post" id="resetform"><tr><td><input type="text" id="userphone" value="" placeholder="输入您的手机号码"></td></tr><br><tr><td><input type="password" id="resetpass1" value="" placeholder="输入您的新密码"></td></tr><br><tr><td><input type="password" id="resetpass2" value="" placeholder="再次输入您的新密码"></td></tr><br><tr><td><input type="reset" value="清空"></td><td><input type="button" id="resetbtn" οnclick="resetpass()" value="提交"></td></tr></form>
</body>
</html>
<script src="../static/js/jquery.min.js"></script>
<script type="text/javascript">function resetpass(){var userphone=document.getElementById("userphone").valuevar resetpass1=document.getElementById("resetpass1").valuevar resetpass2=document.getElementById("resetpass2").valuevar submit_flag=1//判空if((userphone.length==0)||(resetpass1.length==0)||(resetpass2.length==0)){submit_flag=0alert("请把信息填写完整!")}//判断密码一致性if(resetpass2!=resetpass1){submit_flag=0alert("两次填写的密码不一致")document.getElementById("resetpass1").focus();}//判断手机号if(userphone.length!=11){submit_flag=0alert("手机号码应为11位!")document.getElementById("userphone").focus();}var regu =  /^1[3456789]\d{9}$/if(!(regu.test(userphone)) ){submit_flag=0alert("手机号码格式有误!")document.getElementById("userphone").focus();}//判断密码格式if(!((resetpass1.length>=6)&&resetpass1.length<=18)){submit_flag=0alert("密码长度应该为6-16位!")document.getElementById("resetpass1").focus();}var regex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z]).{6,18}');part_pass=resetpass1.split(" ")if((!(regex.test(resetpass1))) || part_pass.length!=1){submit_flag=0alert("密码为数字+英文字母 且不可以包含空格!")document.getElementById("resetpass1").focus();}//发起请求if(submit_flag==1){$.ajax({url:"/resetpass",data:{userphone:userphone,resetpass:resetpass2},success: function (data) {if (data.data==1){alert("密码修改成功!")window.open("/",'_self')}else{alert("修改密码失败!请重试")}},error: function (xhr, type, errorThrown) {// print("ajax请求失败!")}})}// alert(submit_flag)}
</script>

免密登录

html代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><link rel="stylesheet" href="../static/css/login.css" rel="external nofollow" ><script src="../static/js/jquery-1.7.2.min.js"></script><script src="../static/js/register.js"></script><title>树懒电影登录</title><script ></script>
</head>
<body><div id="container"><div id="container-child"><div id="img-div"><img src="../static/img/shulan.png"></div><div id="login-div"><div><p class="p-title">登录您的树懒电影</p><form id="login-form" method="post"><div class="input-d"><input class="input-text" type="text" name="userphone" id="userphone" placeholder="请输入您的账号"></div><div class="input-d"><input class="input-text" type="password" name="password" id="password" placeholder="请输入您的密码"></div><div class="div-input"><div><input type="checkbox" value=“1” class=“remeber” οnclick="onClickHander(this)"><label>记住密码</label></div></div><button type="button" class="login-button" οnclick="login_()">登 录</button><div class="footer"> <a href="http://127.0.0.1:5000/regis" rel="external nofollow" >注册</a> | <a href="http://127.0.0.1:5000/reset" rel="external nofollow" >忘记密码</a></div></form></div></div></div></div>
</body>
</html>
<script>var cb=0function onClickHander(obj) {if(obj.checked==true){cb=1// alert(cb)}else{cb=0// alert(cb)}}function login_(){var userphone=document.getElementById("userphone").valuevar password=document.getElementById("password").value// alert(cb)$.ajax({url: "/web_login",data: {userphone:userphone,password:password,cb:cb},success: function (data) {//正常验证失败弹窗if (data.data == 0)alert("账号或密码错误!")//验证成功,返回responseif (data.data != 0)window.open("http://127.0.0.1:5000/show","_self")},error: function (xhr, type, errorThrown) {print("登录js,验证账号密码ajax请求失败!")}})}
</script>

Python路由

#免密登录
@app.route('/web_login/',methods=['GET', 'POST'])
def web_login():userphone = request.values.get('userphone')password=request.values.get('password')cb=request.values.get('cb')print("是否记住密码: "+cb)            #cb的返回值类型是 str 字符串# print(type(cb))print("登录账号:"+userphone+"   "+"密码:"+password)res=sql.web_login(userphone,password)if(res==True):session['userphone'] = userphoneif(cb=="1"):print("开始存储cookie登录账号:" + userphone + "   " + "密码:" + password)resp = make_response('储存cookie')resp.set_cookie('cookphone', userphone, max_age=3600 * 24 * 15)resp.set_cookie('cookpass', password, max_age=3600 * 24 * 15)print("登录成功且用户选择记住密码,返回response")return resp                   #登录成功且用户选择记住密码,返回responseelse:print("登录成功 返回 1 状态码")return jsonify({"data": 1})  # 登录成功 返回 1 状态码else:print("登录失败   返回 0 状态码")return jsonify({"data":0})  #登录失败   返回 0 状态码

数据库验证登录

# 用户(web)登录验证
def web_login(userphone, password):cursor = Noneconn = Noneres=[]if(userphone==None or password==None):return Falseconn, cursor = get_conn()sql = "select userphone,userpass from userdata where '"+userphone+"'=userphone and '"+password+"'=userpass "res=query(sql)conn.commit()if(len(res)==0):print("登陆失败(WEB)")close_conn(conn, cursor)return Falseelse:close_conn(conn, cursor)print("登陆成功(WEB)")return True

以上就是flask框架实现修改密码和免密登录功能的详细内容

flask框架如何实现修改密码和免密登录功能相关推荐

  1. Hadoop2——SSH免密登录功能配置

    SSH免密登录功能配置 我有三台虚拟机,其中一台主机,两台克隆机 192.168.159.130 hadoop01 (主机) 192.168.159.128 hadoop02 192.168.159. ...

  2. 杨校老师课堂之集群内SSH免密登录功能配置

    SSH免密登录功能配置 1. 在主节点虚拟机内进行如下操作: [root@hadoop1 tmp]# ssh-keygen -t rsaGenerating public/private rsa ke ...

  3. SAP小技巧之 全版本的SAPGUI免密登录方式

    点击蓝字 关注我们 前言 SAPGUI 7.4以下版本提供了一个创建快捷方式时输入密码的功能(激活这个功能需要调整注册表,搜索SAPGUI免密登录,可以查到很多,这里就不啰嗦了).有多少人为了使用这个 ...

  4. 中国移动一键免密登录103102 Android 包签名错误

    1.概述 移动统一认证一键免密登录 api 被调用时会检测应用的 MD5 应用签名以确认应用的合法性.出现103102 包签名错误那么就是应用的 MD5 签名与用户在中国移动开发者社区上填写的 MD5 ...

  5. 若依框架免密登录(仅做参考)

    一.在framework模块下security包下新建config包,在包里新建CustomLoginAuthenticationProvider.java类 继承DaoAuthenticationP ...

  6. windows远程连接ubuntu-(密码登录、密钥登录、免密登录)

    入坑前的必备小知识: 什么是公钥登录? 所谓"公钥登录",就是用户将自己的公钥储存在远程主机上.登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来.远 ...

  7. Mysql 更改密码详解及设置免密登录

    更改密码: 5.7版本以前: update mysql.user set password=password('root') where user='root'; 5.7及以上: update mys ...

  8. ssh设置免密登录后登录仍需密码可能的原因,以及 ssh 出问题或的调试方法

    免密登录失败 ssh设置免密登录后登录仍需密码可能的原因,home 路径下的对应用户权限不对,或者 .ssh 文件夹权限不对,/home/$user 和 /home/$user/.ssh 路径必须是 ...

  9. 解决mysql不能修改密码_如何解决mysql修改密码后不能成功登录_数据库_mysql修改密码_课课家...

    今天给大家解决下MySQL修改密码后导致不能登录的问题,一般我们都知道mysql4.1.1版本后修改了用户密码的格式,一旦修改了密码,4.1.1以前的版本上是不能进行成功登录的,那么对于这些问题该如何 ...

最新文章

  1. cisco与h3c的console、vty配置比较
  2. Linux(内核和用户态的)动态内存管理
  3. 也说翟鸿燊忽悠的一面
  4. 【图像处理】——灰度变换心得(cv2.normalize规范化值0-255,cv2.convertScaleAbs(new_img)转为8位图)
  5. 【华为云技术分享】《跟唐老师学习云网络》 - Tcpdump大杀器抓包
  6. json vue 对象转数组_vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
  7. intel 指令集_苹果首款ARM Mac来了,浅谈ARM和Intel处理器
  8. pinia中文文档 指导文档中文翻译版 pinia指导中文翻译
  9. javascript;json数据,js转换日期方法。
  10. “鱼”和“熊掌”也能兼得——省时省心
  11. 【生活相关】三(米新江老师语录)
  12. python爬虫SSL: CERTIFICATE_VERIFY_FAILED解决方案
  13. 我眼中的《APUE》
  14. EasyUI仓库管理系统
  15. 服务器为什么经常掉线?
  16. 利用CSS3中的clac()实现按照屏幕分辨率自适应宽度
  17. 关于NOI Linux的IDE及代码调试技巧(OIER必看)
  18. CPU和内存之间关系的演变
  19. wav2lip:Accurately Lip-syncing Videos In The Wild
  20. Shor’s algorithm

热门文章

  1. 山东大学教授建议:让博士生先回学校
  2. 人为何会发烧,超过42°C会怎样?
  3. 作为一名准程序员,谈一下现实和未来
  4. Redis源码分析:基础概念介绍与启动概述
  5. pandas高级处理-分组与聚合
  6. 懒人必备 |通过爬虫 筛选以及查看CSDN 满足相应积分的资源列表 简单好用
  7. C语言连续指针_只愿与一人十指紧扣_新浪博客
  8. 五分钟搞定VS2017+TensorRT环境搭建
  9. Plan9操作系统基本概念
  10. Linux终端:speedtest_cli检测你的实时带宽速度