Можем ли мы использовать JWT с sqlalchemy во флаконах API, как показано ниже? - PullRequest
0 голосов
/ 18 февраля 2019

Ниже приведены файлы кодов с соответствующими фрагментами кода:

init .py:

app = Flask(__name__)
cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
app.config['SECRET_KEY'] = 'super-secret'

В auth.py:

def authenticate_user(login, password):
    '''
    Return dict or None after checking against db for valid user
    '''
    s = select([users]).where(users.c.email==login)
    result_set = conn.execute(s)
    if result_set.rowcount == 1:
        for r in result_set:
            print r[users.c.password], 'result_set[users.c.password]'
            if pwd_context.verify(password, r[users.c.password]):
                # There is only one unique email/password pair
                print 'matched'
                return dict(r)
            else:
                return None
    return

Как получить значение access_token для пользователя при входе в систему?Я установил Flassk-JWT в virtualenv и следовал этому документу: https://pythonhosted.org/Flask-JWT/ Но учтите, что я не использую ООП, т.е.Пользовательский класс и т. Д. Я использую ядро ​​sqlalchemy с Flask и python.Чтобы в дальнейшем использовать этот токен, мне нужно вызвать его как декоратор для вызова API, что я понимаю как:

@app.route('/rt/api/v1.0/list', methods=['GET'])
@jwt_required()

В views.py:

from myapp.auth import authenticate_user

@app.route('/auth', methods=['POST','GET'])
def login():
    email = request.form["email"]
    password = request.form["password"]
    if request.method == 'POST':
            result_set = authenticate_user(email, password)
            if result_set:
                session['email'] = result_set['email']
            user_dict = result_set
            if user_dict:
                session['email'] = user_dict['email']
            jwt = JWT(app, user_dict['email'], user_dict["id"])

Как точноподключите различные файлы кода, чтобы получить значение токена доступа - вот что я застрял. Пожалуйста, руководство.Также хотите исключить запрос API входа в систему от callback before_request ().На всех других API могут выполняться обратные вызовы before и after_request ().

1 Ответ

0 голосов
/ 21 февраля 2019

Наконец-то нашли способ лучше реализовать с базовым использованием в readthedocs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...