美文网首页
python简单的登录认证

python简单的登录认证

作者: 一__谷__作气 | 来源:发表于2019-08-28 16:05 被阅读0次

本次学习遇到坑,不知道为什么loginFrom类如果继承FlaskForm,那么loginForm类的对象myform的validate()方法返回一直是false,此时要在html文件表单最后加上{{ form.csrf_token }}。
但是我不知道是什么意思,我也不想加,就把loginFrom类继承Form,那么不加
{{ form.csrf_token }},也可以正常获得取值逻辑运行正常

# Python版本:3.7.4
#db.py
from pymysql import connect

DIALECT = 'mysql'
DRIVER = 'pymysql'
USERNAME = 'root'
PASSWORD = '123456'
HOST = 'localhost'
PORT = '3306'
DATABASE = 'test1'

conn = connect('localhost','root','123456','test1')
cur = conn.cursor()

def addUser(username,password):
    sql = "insert into user(username,password) values ('%s','%s')" % (username,password)
    cur.execute(sql)
    conn.commit()
    conn.close()

def isExist(username,password):
    sql = "select *from user where username = '%s' and password = '%s'" %(username,password)
    cur.execute(sql)
    result = cur.fetchall()
    if (len(result)==0):
        return False
    else:
        return True
# 需求:使用flask框架,配合HTML和JS程序,编写两个页面,第一个页面允许用户填入用户名和密码进行注册,第二个页面登录

# app.py
from flask import Flask, render_template, request, redirect
from db import *

app = Flask(__name__)
app.secret_key = 'development key'

from wtforms import StringField, PasswordField, validators, Form


class loginForm(Form):
    username = StringField("username", [validators.DataRequired()])
    password = PasswordField("password", [validators.DataRequired()])


@app.route('/user', methods=["POST", "GET"])
def login():
    myform = loginForm(request.form)
    if request.method == "POST":
        username = myform.username.data
        password = myform.password.data
        aaa = myform.validate()
        if isExist(username,password) and myform.validate():
            return redirect('http://www.baidu.com')
        else:
            message = 'login failed'
            return render_template('index.html', message=message, form=myform)

    return render_template('index.html', form=myform)


@app.route('/register', methods=["POST", "GET"])
def register():
    myForm = loginForm(request.form)
    if request.method == "POST":
        addUser(myForm.username.data, myForm.password.data)
        return "注册成功"
    return render_template('index.html', form=myForm)

if __name__ == '__main__':
    app.run(debug=True)

<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

    <form action="/user" method="POST">
        {% if message%}

        {{message}}

        {%endif%}
        <br>
        name
        <br>
        {{form.username}}
        <br>
        password
        <br>
        {{form.password}}
        <br>
        <input type="submit" value="提交">
        <br>
        <input type="reset" value="reset">
         #{{ form.csrf_token }}
    </form>
    


</body>
</html>

相关文章

  • python简单的登录认证

    本次学习遇到坑,不知道为什么loginFrom类如果继承FlaskForm,那么loginForm类的对象myfo...

  • Laravel学习日记2018-06-27

    简单强大的用户登录 用户认证机制 用户认证机制前提是使用了Laravel的默认Eloquent User模型,该模...

  • DRF Django restframe work 十大组件

    认证 看到认证这两个字那肯定登录是其用处之一,python中使用的话可以自定义认证类;或者用默认的直接在djang...

  • 登录那点事

    简单登录 client:提供用户名和密码或者是其他的认证凭证 server:验证client提供的认证凭证,记录登...

  • Tomcat+JSP使用BASE认证

    HTTP的BASE认证属于比较简单的认证方式,不需要自己做登录页面,借此机会试试 在项目中启用BASE认证 修改项...

  • 最简单的表单认证登录

    最近在学Springboot这个优秀的开源框架,SpringBoot是基于Spring框架上的加强和拓展,遵循着简...

  • CMDB

    统一登录认证 基本逻辑,登录认证系统,在登录时,前端发送请求到统一的认证系统,返回token。然后前端发送post...

  • python client访问REST Service实现双向T

    这是一个简单的例子实现python client访问REST service支持双向TLS认证。 python版本...

  • API 安全机制 | 认证

    认证 vs 登录 认证和登录不一样,登录是获取用户信息,认证是验证用户身份是否合法; 登录的行为,在一段时间内,往...

  • React & Redux 实现注册登录认证系统(31 个视频)

    React & Redux 实现注册登录认证系统(31 个视频) React & Redux 实现注册登录认证系统...

网友评论

      本文标题:python简单的登录认证

      本文链接:https://www.haomeiwen.com/subject/zfhmectx.html