Refre sh user auth table после вставки нового пользователя python flask restapi - PullRequest
0 голосов
/ 06 апреля 2020

Хорошо, моя проблема заключается в:

У меня есть простой 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()
...