Защита страниц с помощью логина / аутентификации пользователя фляги - PullRequest
0 голосов
/ 24 апреля 2019

Я много занимался разработкой колбы, но не углубился в защиту веб-приложений с помощью аутентификации пользователя. Ради этого примера давайте предположим, у меня есть базовая настройка

from flask import Flask

app = Flask(__name__)

# Can't be accessed if not logged in
@app.route('/secure')
def secure():
    # pseudo code
    if user != authenticated:
        return redirect('login')
    else:
        return render_template('secure.html')

@app.route('/login')
def login():
    return render_template('login.html')

# Called from the login page form
@app.route('/authenticate')
def authenticate():
    # do some code to authenticate, pseudo
    if username in DB and password == password-hash:
        user = authenticated
        return redirect('/')

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

Я могу использовать mongodb и добавлять / удалять / запрашивать данные. Моя проблема в том, что я не знаю, как связать их вместе. Пользователь создает учетную запись, данные добавляются в БД, пользователь входит в систему, запрашивает ввод данных в БД, если он совпадает, они могут получить доступ к сайту.

Проблема, с которой я сталкиваюсь, заключается в том, как сообщить своему приложению Flask, что после того, как пользователь предоставит правильные учетные данные, он сможет запомнить / узнать, кто они, и разрешить им доступ к закрытым страницам. Я думаю, как я могу отслеживать статус аутентификации до тех пор, пока они не выйдут из системы.

примечание: хотелось бы знать самый безопасный метод многопользовательской аутентификации во Flask

1 Ответ

1 голос
/ 24 апреля 2019

Вам понадобится API, который обрабатывает методы http. Flask-restful и Flask-httpauth вы можете написать код, который выглядит следующим образом:

@marshal_with(piece_fields)
    @auth.login_required
    def post(self):
        args = self.reqparse.parse_args()
        piece = models.Piece.create(**args)
        return piece, 201,
        {'Location': url_for('resources.pieces.Piece', id=Piece.id)}

Где @ auth.login_required - это базовая аутентификация или аутентификация по токену http (определенная в отдельном файле с именем auth.py), охватывающая ваши методы http. Они будут требовать отправки http-запросов с именем пользователя и паролем или токеном. Надеюсь это поможет!

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