好的,我的问题出在:
我有一个使用flask,Python,flask-mysql和flask-jwt制作的简单的api。
i具有在人员表中添加,修改,选择和删除寄存器的功能。
我还创建了一个包含ID,邮件和密码(由jwt散列)的用户表。
所有工作原理,我都有一个功能,可以将用户添加到用户表中,还有一个功能,可以读取这些用户并存储在列表中,以便在身份验证方法中使用它们。
当我添加一个具有“ / register”功能的新用户时,问题仍然存在,如果我想对该新用户进行身份验证,则必须重新启动/刷新python。
对不起我的英语,我会说西班牙语。
我共享两种方法的代码。
谢谢。
class User(object):
def __init__(self,id,username,password):
self.id = id
self.username = username
self.password = password
def __str__(self):
return "User(id='%s')" % self.id
users = []
def seleccionar_usuarios():
try:
conn = mysql.connect()
cursor = conn.cursor(pymysql.cursors.DictCursor)
cursor.execute(
"SELECT id_usr,mail_usr,pass_usr FROM tbl_users")
itr = list(cursor.fetchall())
for i in itr:
id_func = (i['id_usr'])
username_func = (i['mail_usr'])
password_func = (i['pass_usr'])
users.append(User(id_func,username_func,password_func))
return None
except Exception as e:
print(e)
finally:
cursor.close()
conn.close()
seleccionar_usuarios()
username_table = {u.username: u for u in users}
userid_table = {u.id: u for u in users}
def authenticate(username,password):
user = username_table.get(username,None)
if user and check_password_hash(user.password,password):
return user
def identity(payload):
user_id = payload['identity']
return userid_table.get(user_id,None)
jwt = JWT(app,authenticate,identity)
@app.route('/register',methods=['POST'])
def new_user():
try:
_json = request.json
_nomb = _json['mail']
_pass = _json['password']
_hashedpass = generate_password_hash(_pass,method='sha256')
if _nomb and _pass and request.method == 'POST':
sqlQuery = "INSERT INTO tbl_users(mail_usr,pass_usr) VALUES(%s,%s)"
bindData = (_nomb,_hashedpass)
conn = mysql.connect()
cursor = conn.cursor()
cursor.execute(sqlQuery,bindData)
conn.commit()
respone = jsonify('Se agregó un registro con Exito!')
respone.status_code = 200
return respone
else:
return registro_no_encontrado()
except Exception as e:
print(e)
finally:
cursor.close()
conn.close()