Хорошо, моя проблема заключается в:
У меня есть простой API с результирующим значением, созданный с Flask, Python, Flask - mysql и flask -jwt.
У меня есть функции для добавления, изменения, выбора и удаления регистров в таблице персон.
У меня также есть таблица пользователей с Id, mail и паролем (хешируется jwt).
все работает, у меня есть функция, чтобы добавить пользователей в таблицу пользователей, и функция, которая читает этих пользователей и сохраняет в списке, для использования их в методе аутентификации.
Проблема возникает, когда я добавляю нового пользователя с функцией "/ register", мне нужно перезапустить / refre sh python, если я хочу аутентифицировать этого нового пользователя.
извините за мой engli sh, я говорю по-испански.
Я делюсь кодом двух методов.
спасибо.
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()